‘壹’ c语言中 scanf后面一定要跟个 getchar吃回车吗
c语言中在读取键盘数据时,一般是带缓存的数据输入,需要按回车键才能完成该“行”数据的输入确认。
而scanf()函数对这个回车确认符并不进行处理,回车符会留在输入缓存区中。
因此,在下一个读“字符”操作函数(getchar, scanf("%c"), gets()等)运行时,会读到这个字符。
而在读数值型数据或字符串时,scanf()会从第一个非空白字符(空白字符指:回车,空格,TAB键)开始读取,自动忽略前面的空白字符,而遇到空白字符结束该类型数据的输入。
因此,是否一定要在scanf后面跟个 getchar吃回车,要看下一个输入的数据类型是什么,如果是读字符类操作,处理办法有多种方式:
一、用fflush(stdin)命令强行刷新输入缓存,丢弃输入缓存中的数据,此种方法在windows下使用有效,linux无效。
charch;
fflush(stdin);//不管缓存中有没有数据,强行清除
ch=getchar();//这里会等待用户输入一个字符
二、前面有读数据操作,现在要执行读字符操作,则可用getchar()来吃掉前面的回车确认
inti;
charch;
scanf("%d",&i);//读一个整数,回车确认
getchar();//先吃掉回车确认符,这两句,效果同下一方法的那一句
ch=getchar();//这里会等待用户输入一个字符
三、在scanf()书写上做文章,如:读一个数据,以回车确认,则输写成如下格式
inti;
charch;
scanf("%d%*c",&i);//%*c表示读一个字符,并不赋值给任何变量
ch=getchar();//这里不会读到回车符
‘贰’ C语言中回车怎么打
#include
<stdio.h>
#include<conio.h>
void
main()
{
while(1)
{
printf("in
the
while\
");
if(getch()=='\\r')
break;
}
printf("out
of
the
while\
");
}
这个程序是只需要按一下回车就可以退出了。(用getchar函数,则需按两次)
附:
getchar和getch的区别
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).
getchar函数的返回值是用户输入的第一个字符的ascii码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ascii码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.
相同点都是从键盘上读入一个字符。
getch()从键盘读入一个字符且不回显。
‘叁’ 请问 C语言中回车键应该怎样输入
如果要在程序中表示回车键,只要用转义字符'\n'就可以了。
例如,执行输出语句
printf("Hello!\nToday
is
Friday!\n");
后,就可以得到二行内容:
Hello!
Today
is
Friday!
‘肆’ C语言什么时候应该加getchar()吃掉回车
在需要连续输入的情况下,也就是你刚输入完一个字符串,后面还需要输入另一个,需要加一个getchar(),用它来抵消那个回车键,要不第二个字符串会有问题。
‘伍’ c语言怎么吃掉回车
//
以下语句可以清空输入旅皮缓冲区中嫌镇顷所有残芹陆留(直到回车)
int c;
while((c=getchar())!=' ');