这个程序到底哪儿错了啊??我已经执行了半个多小时了,求高手指点啊!!!因为后天要考试,通宵跪等回答

编写主函数和子函数,主函数进行字符串的输入输出和函数调用,子函数的功能是删除除字符串中的所有字符c,其格式如下:void delchar(char*s,char c)
#include<stdio.h>
void delchar(char*s,char c)
{
int i,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(c!=s[i])s[j++]=s[i];
s[j]='\0';
}
main()
{
char s[100];
char c;
printf("Please input some letters(no more than 100):\n");
scanf("%s",s);
printf("Please input a letter you want to delete:\n");
scanf("%c",&c);
delchar(s,c);
printf("The result is:%s\n",s);
}

你的程序没错误,delchar(s,c)可以正确的去年字符串中指定的字符。但你说有错误,我大胆的猜一下:你在输字符串之后,也就是Please input some letters(no more than 100):这里输入之后,程序直接结束了!这个原因是你用的scanf()这个函数的问题,scanf()函数是从输入流缓冲区中读取值的,而并非从键盘缓冲区读取。也就是说你在输入完字符串之后有个回车符,被当成你要删除的字符赋值给了c。如果要用连续用scanf输出字符串或字符之类,最好在两个scanf之间清掉缓冲区,C有fflush(stdin);这个来清除!你在两个scanf()之间加这个就可以。

printf("Please input some letters(no more than 100):\n");
scanf("%s",s);

fflush(stdin); //清除缓冲区

printf("Please input a letter you want to delete:\n");
scanf("%c",&c);

追问

加了还是不对啊,,它给的错误是:\Cpp1.cpp(4) : error C2065: 'strlen' : undeclared identifier ,\Cpp1.cpp(22) : warning C4508: 'main' : function should return a value; 'void' return type assumed执行 cl.exe 时出错 我有点不能理解.

追答

strlen要求头文件,请在开头加入#include 试试,就是在#include 这后面加上。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-01
虽然看不懂也要回答下追问

额......这是在鼓励我通宵坐求答案的精神么?谢过大侠了

相似回答