c语言,在不使用数组的情况下单纯使用指针对字符串去掉其中的数字,可以先前定义,要用函数

2025-06-20 14:53:24
推荐回答(2个)
回答1:

#include
#include

#define MAX 256 
void proc(char *p)//指针p指向字符串的首地址
{
char *q;
while(*p!='\0')//从首地址开始,循环至字串结束
{
if(isdigit(*p))//这个函数在ctype.h中,判断字符是不是数字
{
//printf("%c",*p );//调试用
//*p=' ';  //把数字替换为空格  *100*
 q=p;//1  如果需要把后面字符往前移就用1-6。
while(*(q+1)!='\0')//2 把当前数字位置后的字符全部往前移一位
{
*q=*(q+1);//3
 q++;//4
}
*q='\0';//5

}
else //6 如果只需要用空格代替数字,1-6不用,保留100那一句就好
p++;
}
}
int main()
{
char s[MAX];//因为c语言中不支持正式string,所以,输入还是要用
//字符数组来保存
scanf("%s",&s);
proc(s);
printf("结果:%s\n", s);
}
/*int main (){
int i,j,t,a[N];
printf("please input ten numbers:\n");
for (i=0;i scanf("%d",&a[i]); //原来只输入了一个数!!!
for (i=0;i {
for (j=0;j {
if (a[i]>a[j])  
{  
t=a[j];  
a[j]=a[i];  
a[i]=t;  
}
}
}
printf("output the sorted numbers:\n");
for (i=0;i printf(" %d",a[i]);
printf("\n");
return 0;
}*/

回答2:

#include 

void DelStrNum(char *str)
{
    char *p = str;
    while(*p != '\0')
    {
        if( *p>='0' && *p<='9')
            ++p;
        else
            *str++ = *p++;
    }
    *str = '\0';
}

int main()
{
    char str[] = "H2e3l1lo W2o0rl1d6!";
    
    puts(str);
    DelStrNum(str);
    puts(str);
    
    return 0;
}