
请大家帮我看一下这道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);}
这区别在哪里? 展开
#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);}
这区别在哪里? 展开
2个回答
展开全部
gets(s);会接收回车,但不会把回车保存到s里,你输入abcd回车的话,s=abcd,但回车也被去掉了。而scanf("%s",s);只接收回车之前的字符,并把回车留在缓冲区,这时遇到后面的getchar()语句时,会自动把回车赋给它,所以无法再输入。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询