C语言找错~谢谢~

来源:百度知道 编辑:UC知道 时间:2024/05/22 17:51:38
#include<stdio.h>
#include<string.h>
delete_data()
{char a,b[10],*p;
int N,i;
scanf("%s",&a);
scanf("%s",b) ;
N=strlen(b);
p=b;
for(i=0;i<N;i++)
if(*p==a)
*p=' ';
N=strlen(b);
return N;
printf("%s",b);
}
main()
{int n;
n=delete_data();
printf("%d",n);
}
定义一个函数,其中包含两个参数:一个字符型,一个字符串型.该函数功能是删除字符串中与字符相同的字符,返回之后的字符串长度,并输出剩余字符串;并调用该函数;
我写的函数结果不尽人意;请指教.谢谢
请不要看我写的程序~ 直接写个答案把~ 我对比下~ 看还有什么不懂的地方~

#include<stdio.h>
#include<string.h>
delete_data()
{char a,b[10],*p;
int N,i;
scanf("%s",&a);
scanf("%s",b) ;
N=strlen(b);
p=b;
for(i=0;i<N;i++)
if(*p==a) /*这里你的指针没有下移,一直比较地一个,
改成这样*/if(*(p+i)==a)
*(p+i)=' ';
N=strlen(b);
return N;
printf("%s",b);
}
main()
{int n;
n=delete_data();
printf("%d",n);
}

delete_data() 没有定义返回类型
a为字符型,scanf("%s",&a); 会使a溢出。用scanf("%c",&a);
return N;
printf("%s",b);return后面的语句不会被执行。

for(i=0;i<N;i++)
if(*p==a)
*p=' ';
这个循环只有执行一遍的效果

...
你自己调试下,别人说的不如自己调试记得深

#include<stdio.h>
#include<string.h>
delete_data(char *b,char c) {
int N,i;
N=strlen(b);
for(;N!=0;N--)
f(*(b+N-1)==c;)
for(i=N;*(b+i-1)!=NULL;i++)