赞
踩
fflush是一个在C语言标准输入输出库中的函数,功能是冲洗流中的信息,该函数通常用于处理磁盘文件。fflush()会强迫将缓冲区内的数据写回参数stream 指定的文件中。
fflush(FILE p)是把FILEp指向的流的输出立即写入并清空,所以加上fflush(stdout)就是立即显示到屏幕上。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
void main()
{
char str[20];
pid_t pid=getpid();
printf("my id is :%d",pid);
fflush(stdout); // if delete this line, we can't see the pid we want
sprintf(str,"kill %d\n",pid);
system(str);
}
这个程序若没有fflush(stdout)就不会看到pid的输出。
第一个程序输入123abc+回车
#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
char c;
scanf("%d", &a);
c = getchar();
printf("a = %d, c = %c \n", a, c);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
char c;
scanf("%d", &a);
fflush(stdin);
c = getchar();
printf("a = %d, c = %c \n", a, c);
return 0;
}
其实,在这里没有区别,因为我实在Linux平台下编译的。这也是我后来才知道的,大家可以参考一下别人的解释
在windows VC下fflush(stdin)是可以实现的,但是linux下不可以。 C标准规定fflush()函数是用来刷新输出(stdout)缓存的。对于输入(stdin),它是没有定义的。但是有些编译器也定义了 fflush(stdin )的实现,比如微软的VC。其它编译器是否也定义了 fflush( stdin)的实现应当查找它的手册。GCC编译器没有定义它的实现,所以不能使用 fflush( stdin )来刷新输入缓存。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。