一个简单的c语言问题: 给定一个字符c和一段字符串s要求在字符串s中删除c
答案:5 悬赏:80
解决时间 2021-01-27 13:37
- 提问者网友:咪咪
- 2021-01-27 02:59
一个简单的c语言问题: 给定一个字符c和一段字符串s要求在字符串s中删除c
最佳答案
- 二级知识专家网友:woshuo
- 2021-01-27 03:17
c=getchar(); 会有一个回车符存在输入流的缓冲区内;
那么使用gets的时候,就会取得这个回车符,gets认为输入结束;
你可这样改一下程序:
printf("输入一个字符:
");
c=getchar();
getchar(); //加上这一句,抵消上次getchar输入的回车符
printf("输入一段字符串:
");
gets(S);
那么使用gets的时候,就会取得这个回车符,gets认为输入结束;
你可这样改一下程序:
printf("输入一个字符:
");
c=getchar();
getchar(); //加上这一句,抵消上次getchar输入的回车符
printf("输入一段字符串:
");
gets(S);
全部回答
- 1楼网友:零点过十分
- 2021-01-27 07:53
你在getchar和gets之间添上fflush(stdin)试试,应该就没有问题了
- 2楼网友:几近狂妄
- 2021-01-27 06:28
getchar 由宏实现:#define getchar() getc(stdin)。getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCⅡ码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCⅡ码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCⅡ码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.
- 3楼网友:青尢
- 2021-01-27 05:26
你可以在getchar()之后用setbuf()清除一下缓冲区或者再调用一次getchar()
代码如下: printf("输入一个字符: ");
c=getchar();
setbuf(stdin, NULL); // 清除stdin的缓冲区
printf("输入一段字符串: ");
gets(S);
或者: printf("输入一个字符: ");
c=getchar();
getchar(); // 读取上次getchar输入的回车符
printf("输入一段字符串: ");
gets(S);
原因在:
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。getchar()调用完毕后,stdin缓冲区的数据没有清除,再次调用gets,gets也是从缓冲区中去读,首先读到的就是回车符,从而马上就退出了。
- 4楼网友:琴狂剑也妄
- 2021-01-27 04:13
注意这里:
for(j=k=0;S[j]!='\0';j++)
{if(S[j]!=c)
S[k++]=S[j];
}
如果你先输入的是字符,就不行,因为字符不可能用s[j]这种形式,如果你想让程序依然能够运行的话,建议将char c 定义为指针 char* c
for(j=k=0;S[j]!='\0';j++)
{if(S[j]!=c)
S[k++]=S[j];
}
如果你先输入的是字符,就不行,因为字符不可能用s[j]这种形式,如果你想让程序依然能够运行的话,建议将char c 定义为指针 char* c
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |