C语言:清空键盘缓冲区(使用scanf(),getchar()函数必读)
清空键盘缓冲区很多种方法,如用fflush(stdin);rewind(stdin);setbuf(stdin, NULL);前两者仅对windows有用,最后一个则对Linux系统也适用。那么为什么需要清空键盘缓冲区呢?以下几个实例:Sample one01#include02
·
清空键盘缓冲区很多种方法,如用
fflush(stdin);
rewind(stdin);
setbuf(stdin, NULL);前两者仅对windows有用,最后一个则对Linux系统也适用。那么为什么需要清空键盘缓冲区呢?
以下几个实例:
Sample one
01 | #include <stdio.h> |
02 |
|
03 | int main(void) |
04 | { |
05 |
char ch1; |
06 |
char ch2; |
07 |
|
08 |
ch1 = getchar (); |
09 |
ch2 = getchar (); |
10 |
printf ( "%d , ch1, ch2); |
11 |
return 0; |
12 | } |
【分析】:
【解决办法】:
修正后的写法:
Sample two
01 |
05 |
|
06 | #include <stdio.h> |
07 |
|
08 | int main() |
09 | { |
10 |
char ch1; |
11 |
char ch2; |
12 |
|
13 |
scanf ( "%c" , &ch1); |
14 |
printf ( "ch1 = %d" , ch1); |
15 |
|
16 |
fflush (stdin); |
17 |
|
18 |
scanf ( "%c" , &ch2); |
19 |
printf ( "ch2 = %d" , ch2); |
20 |
return 0; |
21 | } |
Sample three
01 |
07 |
|
08 | #include <stdio.h> |
09 |
|
10 | int main() |
11 | { |
12 |
char ch1; |
13 |
char ch2; |
14 |
|
15 |
scanf ( "%c" , &ch1); |
16 |
printf ( "ch1 = %d" , ch1); |
17 |
|
18 |
setbuf (stdin, NULL); |
19 |
|
20 |
scanf ( "%c" , &ch2); |
21 |
printf ( "ch2 = %d" , ch2); |
22 |
return 0; |
23 | } |
更多推荐
已为社区贡献1条内容
所有评论(0)