大神指点一下,怎么里面还有字符???

1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>


6 int main()

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);不是清空了输入缓冲区了吗?

拉风的咖菲猫
浏览 109回答 2
2回答

慕的地8271018

flush(stdin)是用来清空输入缓冲区,通常是为了确保不影响后面的数据读取,例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin)。但要注意的是,此函数仅适用于部分编译器(如VC6),但是并非所有编译器都要支持这个功能(如gcc3.2)。这是一个对C标准的扩充。你在linux下用的应该是gcc,因此可能不起作用。

守候你守候我

1、使用proces对象中的process.stdin对象输入用户的数据。2、再使用process对象中的process.stdout对象输出数据,展示属性和属性值。3、查看node.js中的数组,如文件路径和属性,可以直接使用argv属性遍历文件。4、若查看正在运行的Node.js程序对应的进程占用多少内存,直接使用process.memoryUsage方法。5、process对象中的nextTick方法可以将一个函数推迟到下一个方法执行完毕时开始执行。6、结合fs模块和process对象中的nextTick方法,读取文件中的内容。
打开App,查看更多内容
随时随地看视频慕课网APP