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 |
} |
更多推荐



所有评论(0)