|
本帖最后由 rosynirvana 于 2014-3-21 21:35 编辑
首先,和系统处理回车的方式无关
测试代码
- #include <stdio.h>
- int main()
- {
- while(1){
- int ch;
- ch = getchar();
- printf(" %d\n", ch);
- }
- return 0;
- }
复制代码
输入
1
显示
49
10
输入
2
显示
50
10
所以程序认为缓冲区中只有\n
然后输入
2ctrl+z
显示
50
26
输入
ctrl+z
显示
-1
EOF在大多数编译环境中的定义是-1
所以可以看到,只有在新一行输入ctrl+z,才会被认为是EOF信号,而同一行则不会。
同样,最初的那份代码,如果正确地在新一行输入ctrl+z是不会有问题的,如果在同一行输入就会造成残留字符
看来windows下是这个问题
unix……嗯让我先把raspberry刷一遍再去测试XD
|
|