C语言如何做到回车停止输入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何做到回车停止输入相关的知识,希望对你有一定的参考价值。

定义了一个整型数组 int a[100],希望按回车键时停止输入,但是以下语句不管用:
do

scanf("%d",&idata[num]);
num++;
while(idata[num] != '\n');
回车后还是不停地等待输入状态,咋办?

1、打开软件,直接使用int类型来定义一个变量用于保存getchar()返回的字符类型。

2、接下来是循环,如下图所示,直到输入的字符为回车键则退出并输出所有输入的内容。

3、最后,全部的代码如下图所示,输入好了之后回车确定,这样就可以直到回车停止输入。

参考技术A 呵呵,这个问题我也想过,想出了一个不怎么成熟的办法。
#include<stdio.h>
void main()

int a[100],num=0;
char k;
do

scanf("%d",&a[num]);
num++;
k=getchar();
while(k!='\n'&&num<100);

这样以空格隔开各个数字,输入若干以后按回车即可。
但是容错性不好,如果结尾在按回车前多输入了一个空格,那么将继续循环。
如果提升了容错性,那么代码将变得比较复杂。本回答被提问者采纳
参考技术B 呵呵,这个问题我也想过,想出了一个不怎么成熟的办法。
#include<stdio.h>
void main()

int a[100],num=0;
char k;
do

scanf("%d",&a[num]);
num++;
k=getchar();
while(k!='\n'&&num<100);

这样以空格隔开各个数字,输入若干以后按回车即可。
但是容错性不好,如果结尾在按回车前多输入了一个空格,那么将继续循环。
如果提升了容错性,那么代码将变得比较复杂。

回答者: isd12345678 - 五级 2010

他说的好!
参考技术C 在循环条件中检查回车即退出循环便可。
代码示例:
#include<stdio.h>
int main()

int a[50]=0,n;
for(n=1,scanf("%d",&a[n-1]);getchar()!='\n';n++)//判断getchar()!='\n'是否为换行。
scanf("%d",&a[n]);

return 0;
参考技术D 你这样可定不行 scanf()函数是会过滤enter的
所以你的idata[num]永远的得不到enter的ASCII的值

关于c语言中会回车键的功能

我以前问过别人告诉我 说是 执行 和换行两个字符 那请问是先换行还是现执行 而执行指的又是什么 是指把数据 从键盘缓冲区 送到计算机内 还是指 命令程序运行 其实我是不太明白 在以字符串形式 向二位字符数组中的一位数组分别 输入字符串时 在gets();前面加的那个getchar();所获得的是哪个字符?biru void input(int num[],char name []) int i; for(i=0;i<N;i++) printf("input NO.:"); scanf("%D",&num[i]); printf("input name:"); getchar(); gets(name[i]); 请问这个getchar();获得是哪个字符;在输入完数字后按下回车 紧接着输入字符;我试过如果不加getchar();再输入数字后按下回车 会直接输入input name:input NO.:也就是说跳过了字符输入 而gets获得了一个结束字符 所以跳过了 可是那个字符是什么 换行吗?如果换行符在输入到字符数组中后字符数组结束 也就是说换行符实际上='\0'? 可是为什么在按下回车后 input name:input NO.:会在下一行输出 如果说换行备gets();获得不应该不输出换行吗 况且在输入完 整形数据后 换行并没有被接收 它属于屏幕控制字符 不应该紧接着输入吗?

参考技术A 你说的执行是回车符吧('\r',
0x0d),
在这里你可以无视它.
你在按下回车键时,实际读入输入缓冲区的只有一个换行符('\n',
0x0a)。
scanf("%d",&num[i]);执行后,
你输入数字123,
按回车,输入缓冲区的内容是"123\n".
这时数字被scanf读入,
但是输入缓冲区里还有一个'\n'.
getchar()把'\n'取出,以免影响gets.
而gets在遇到'\n'时会停止读数据,所以如果不用getchar取出'\n',
gets遇到'\n'立即停止,只能读到一个空串,
'\0'.
这个'\0'是gets自己添加到字符串尾的,读不到数据就会有这样一个字符,这个是字符串结束标志,并非读到的字符。

以上是关于C语言如何做到回车停止输入的主要内容,如果未能解决你的问题,请参考以下文章

关于c语言中会回车键的功能

C语言输入是怎么区分空格和回车的

c语言中怎样用scanf()读入带空格的字符串

c语言 数制转换(递归)

C语言:从键盘输入一篇英文文本,统计每个英文字母(分大小写)及空格、数字、回车和其他字符,咋编?

怎样检查C语言输入数据的合法性?