C语言如何实现scanf若什么都没输入直接回车则结束输入?

C语言如何实现scanf若什么都没输入直接回车则结束输入?,第1张

你列举的这几个都是多组数据输入循环;这些循环是没有结束标志的;按回车是进入下一次循环;加一个if---break;条件判断结束循环;
if()

;
break;

do{
scanf("%d",&a);
}while(getchar()!='\n');//遇到回车符结束;就是scanf函数不输入任何数,按回车直接结束循环;
for(int i=0;getchar()!='\n';i++)//这也是以回车符结束输入;
scanf('%d",&a[i]);
while(getchar()!='\n')//同上;
scanf('%d",&a[k++]);

这个不一定的,scanf接收的很容易误解为直接就是用户的当前输入,
其实是键盘缓冲区的内容。
如果担心的话,可以在scanf前加上fflush(stdin);来强制清空键盘缓冲区中的内容

不能,你输入的两个数之间必须间隔,要么用空格间隔,要么用回车表示这个数字已输入。
如果用空格,你前面输入的数没有送入内存,系统无法判断,当前程序执行语句仍为你之前的输入语句!
如果用回车表示这个数字已输入,那你就应经换行了!
例如:
#include<stdioh>
int main()
{
int a[3][3],i,j,n;
scanf("%d",&n):
for(i=0;i<n;i++0
{for(j=0;j<n;j++)
scanf("%d",&a[i][j];
printf("\n");
}
printf("the a array has been inputed");
return 0;
}
你如果每输入一个数,就用空格间隔,则你在输入所有的数组后,最后的那个输出语句是在输入数字下面好几行;
如果把那个printf语句删去,则那个输出语句会在输入数据的下一行;
你如果输入一行的数据后按回车,则会换两行(printf("\n");语句没删去),如果删去printf("\n");,就在下一行了。
所以是没有办法达到你的要求的!
求给分!!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13351130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存