
正文
为什么c语言需要按两次回车,c语言为什么按回车不输出结果
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
这个c程序为什么我输入已经5个字符可为什么还是可以输入?而且我必须按...
1、这是因为,你的程序中有scanf的调用,它不读取 回车,所以在输入缓冲里面剩下了 这个字符,因此gets下次读取的时候就会把这个字符读完后就又进入了下一 4门课成绩的输入。
2、c语言在这方面控制的不是很严格,违规使用,可能成功,但是会出一些不可预料的错误,比如你碰到的异常。当你定义s[3]输入4个以上字符时,实际上侵占了别人的空间,那个空间可能是数据,也可能是代码。
3、输入很多字符 它一样可吸入 再打印出来是正常的,不过这样做很危险 长度超过10就写到别人的空间里面了,容易导致程序崩溃。
4、程序没问题的 , 我想你是在输入时加了空格了吧,getchar()和putchar()函数会把空格也当作字符输入存储的,所以在输入1 2 3的时候就已经达到5个字符了,你可以试试把程序中的5改成9试试,那就应该没问题了。
5、发生了内存溢出,C语言不检查是否内存溢出,使用上要格外小心。多输入的字符存储在紧邻的栈上,在c[5]后面的存储位置,如果后面有其他变量,那其他变量会被覆盖。
相关问答
Q1: C语言为啥需要按两次回车?
需要两次的原因:while (getline(cin, line)) //程序停(阻塞)在这里等待输入。
第一次是读到了字符a,第二次是读到了驾车符。所以会有你说的情况。要解决这样的问题,可以,再增加一个变量char c1;把读入语句改为:scanf(%c%c,&c,&c1);---这个c1用来读取字符后面的回车符。
象你这个,就必须输入两个三位的数,然后再输入一个回车,这样才完成了格式的要求。而在程序中,你还要再输入一个回车,这样你的输入才提交个程序,所以,就要输入两次回车了。
Q2: C语言scanf_s为啥输入两次
输入两次,是为了把上一个scanf的回车符号给接收掉。ps:避免这种多余字符,还有很多方法,比如:把字符输入写在第一个 ,后面的scanf都写数值的输入。循环接收字符并判断,筛除回车符号。
scanf(%d d,&a,&b);由于两个%d之间有空格所以输入时可以在两个输入字符间输入多个空格。同理scanf(%d%d\n,&a,&b);由于两个%d之后有换行符所以输入时换行即回车被忽略了。
因为在代码第7行的输入完成后,换行符 还在键盘缓冲区里,在第8行读入字符时,第一个读入到c1的字符就是这个换行符,第二个读入到c1的字符才是正确的输入字符,所以须2次读入。
为什么c语言需要按两次回车的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言为什么按回车不输出结果、为什么c语言需要按两次回车的信息别忘了在本站进行查找喔。







