#include <stdio.h>
int main(){
char ch;
while((ch=getchar())!=EOF){
putchar(ch);
}
char ch2 = 'A';
printf("ch2=======>%c\n",ch2);
ch2 = getchar();
printf("ch2=======>%d\n",ch2);
return 0;
}
为什么在 win 下,输入 Ctrl+Z ,会等待 ch2 的 getchar()输入,而 Mac 下, ch2 的 getchar()直接跳过,而且 ch2 的值总是-1(EOF)?
1
fcicq 2016-07-31 11:48:41 +08:00
楼主中了一个坑. getchar 的返回值类型是 int. 必须用 int 类型的变量存放这个返回值, 判断完了再赋值给 char 类型的变量.
|
2
SuperFashi 2016-07-31 11:52:09 +08:00 via Android
你这声明是 c++的啊,为什么这么多人非要写 c 风格的读入输出呢……
|
3
SuperFashi 2016-07-31 11:52:45 +08:00 via Android
tm 眼瞎了,抱歉。
|
4
SuperFashi 2016-07-31 11:55:05 +08:00 via Android
不过给你个链接,下面的样例 code 解释了你的问题。
http://en.cppreference.com/w/c/io/getchar |
5
wsy2220 2016-07-31 12:11:23 +08:00 via Android
1lou 正解,我也被坑过
|
6
msg7086 2016-07-31 13:41:22 +08:00
因为不同编译器的关系?
|
7
oska874 2016-07-31 18:52:59 +08:00
你应该用 ctrl+d 吧,我在在 linux 下 试了是可以的达到你的效果的。
另外楼上几位说 ch 类型不对的,和 lz 的问题没啥关系, int 的 -f 就是 0xffffffff , char 的 0xff 也是 -1 ,所以没啥影响。 |