请大家帮我看一下这道C语言题目,帮我找找出错原因,谢谢!

#include<stdio.h>#include<string.h>main(){chars[80];charch;char*p=s;inti,j;printf("Pl... #include<stdio.h>
#include<string.h>
main()
{
char s[80];
char ch;
char *p=s;
int i,j;
printf("Please input a string:");
scanf("%s",s);
printf("Which character will be deleted?");
ch=getchar(); //也可以用scanf("%c",&ch);
for(i=0,j=0;p[i]!='\0';i++)
if(p[i]!=ch)
p[j++]=p[i];
p[j]='\0';
puts(p);
}
这个程序是错的,我把第十行对字符数组的赋值改成 gets(s);
#include<stdio.h>
#include<string.h>
main()
{
char s[80];
char ch;
char *p=s;
int i,j;
printf("Please input a string:");
gets(s);
printf("Which character will be deleted?");
ch=getchar(); //也可以用scanf("%c",&ch);
for(i=0,j=0;p[i]!='\0';i++)
if(p[i]!=ch)
p[j++]=p[i];
p[j]='\0';
puts(p);}
这区别在哪里?
展开
 我来答
koa875
2013-05-05 · TA获得超过183个赞
知道答主
回答量:39
采纳率:0%
帮助的人:52.2万
展开全部
gets(s);会接收回车,但不会把回车保存到s里,你输入abcd回车的话,s=abcd,但回车也被去掉了。而scanf("%s",s);只接收回车之前的字符,并把回车留在缓冲区,这时遇到后面的getchar()语句时,会自动把回车赋给它,所以无法再输入。
咖啡色De_回忆
2013-05-05 · TA获得超过187个赞
知道小有建树答主
回答量:166
采纳率:100%
帮助的人:79.8万
展开全部
%s控制输出时以空格作为间隔符的,gets是以回车作为结束标记的
更多追问追答
追问
可否针对此题做详解?
追答
貌似不行,我把程序试了一下才知道不是我想的那个问题,ch=getchar();为什么不执行了呢?好奇怪,懂了教教我啊,呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式