while((c = getchar()) != EOF){ putchar(c); } |
char c; c = getchar(); |
int c; c = getchar(); |
/*Edit by Godbach CU Blog: http://blog.chinaunix.net/u/33048/ */ #include <stdio.h> #include <stdlib.h> int main(void) { int c; /* 终端驱动处于普通的一次一行模式 */ system("stty raw"); /* 现在的终端驱动处于一次一个字符模式 */ c = getchar(); putchar(); /* 终端驱动处又回到一次一行模式 */ system("stty cooked"); return 0; } |
原帖由 ivhb 于 2007-8-24 15:39 发表
关于按下CTRL+D部分(EOF总结部分),应该归于终端设置吧。比如,对于当前输入的buffer里
非换行字符,则需要按下两次。第一次,是刷新,第二次是设置结束标志。这个应该说,更多就是一个终端属性设定。试想, ...
原帖由 思一克 于 2007-8-24 16:30 发表
是tty buffer的作用。
getchar()还是按字节读的。也就是说你输入ABCDEFG\n
那么getchar()一共被调用了8次,putchar()也是8次。
原帖由 ivhb 于 2007-8-24 15:39 发表
关于按下CTRL+D部分(EOF总结部分),应该归于终端设置吧。比如,对于当前输入的buffer里
非换行字符,则需要按下两次。第一次,是刷新,第二次是设置结束标志。这个应该说,更多就是一个终端属性设定。试想, ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |