1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 5 6 int main()7 8 {9 int a = 0;10 11 char buf[48] = {0};12 printf("输入一个整数:");13 scanf("%d", &a);14 fflush(stdin); 15 printf("输入一个字符串:");16 gets(buf);17 printf("buf = %s\n", buf);18 19 return 0;20 }程序如上,在终端运行结果如下:[hao@Roc 桌面]$ ./a.out输入一个整数:5输入一个字符串:buf = [hao@Roc 桌面]$ 为什么gets(buf)中接收的是一个空格或者是回车符,前面的fflush(stdin);不是清空了输入缓冲区了吗?
2 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
flush(stdin)是用来清空输入缓冲区,通常是为了确保不影响后面的数据读取,例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin)。
但要注意的是,此函数仅适用于部分编译器(如VC6),但是并非所有编译器都要支持这个功能(如gcc3.2)。这是一个对C标准的扩充。
你在linux下用的应该是gcc,因此可能不起作用。
守候你守候我
TA贡献1802条经验 获得超10个赞
添加回答
举报
0/150
提交
取消