Tag: fflush

一个程序可以同时调用同一个FILE *上的fflush()吗?

如果有几个线程在同一个FILE*variables上同时调用fflush() ,会发生什么不好的情况(如未定义的行为,文件损坏等) 澄清:我不是指同时写入文件。 我只是说同时冲洗它。 线程不会同时读取或写入文件(它们只在临界区内写入文件,一次只写一个线程)。 他们只在关键部分之外冲洗,尽快释放关键部分,让其他人做其他工作(文件写作除外)。 虽然可能发生一个线程正在写入文件(在关键部分内),而另一个线程正在刷新文件(在关键部分之外)。

fflush和fsync之间的区别

我认为fsync()在内部执行fflush(),因此在stream上使用fsync()是可以的。 但是当我在networkingI / O下执行的时候,我得到了意外的结果。 我的代码片段: FILE* fp = fopen(file,"wb"); /* multiple fputs() call like: */ fputs(buf, fp); … … fputs(buf.c_str(), fp); /* get fd of the FILE pointer */ fd = fileno(fp); #ifndef WIN32 ret = fsync(fd); #else ret = _commit(fd); fclose(fp); 但似乎_commit()不刷新数据(我试图在Windows上,数据写在Linux导出的文件系统)。 当我更改代码为: FILE* fp = fopen(file,"wb"); /* multiple fputs() call like: */ fputs(buf, […]

在C中刷新缓冲区

即使是输出stream, fflush()不能用来刷新缓冲区吗? 有什么用? 一般来说,我们如何冲洗一个缓冲区?

fflush(stdin)在下面的代码中如何改变输出?

#include <stdio.h> int main() { int test_no ,count=1,i,n,j; scanf("%d",&test_no); fflush(stdin); int arr1[test_no]; for(i=0;i<test_no;i++) { scanf("%d",&n); printf("\n"); int arr[n]; for(j=0;j<n;j++) { fflush(stdin); scanf("%d",&arr[i]); } for(j=1;j<=n-1;j++) { if(arr[j-1]>arr[j]) { count++; } } if(n==1) { arr1[i]=1; } else { arr1[i]=count; } count=1; } for(i=0;i<test_no;i++) { printf("%d\n",arr1[i]) ; } return 0; } 这个解决scheme就是这个问题 。 我没有得到第三种情况所需的输出,它给我输出3或4取决于我是否在scanf("%d",arr[i])或scanf("%d",arr[i]) fflush(stdin)之前放置fflush(stdin) scanf("%d",arr[i]) ,请告诉这个代码的问题。

我无法刷新标准input

如何刷新stdin ? 为什么它不能在下面的代码片段中工作? #include <string.h> #include <stdio.h> #include <malloc.h> #include <fcntl.h> int main() { int i=0,j=0, sat; char arg[256]; char * argq; argq = malloc(sizeof(char)*10); printf("Input the line\n"); i=read(0, arg, sizeof(char)*9); arg[i-1]='\0'; fflush(stdin); i=read(0, argq, sizeof(char)*5); argq[i-1]='\0'; puts(arg); puts(argq); return 0; } 现在,如果我把input作为11个字符,只能读取9,但标准input中剩余的两个字符不会刷新,并在argq中再次读取。 为什么? input:123 456 789 产量:123 456 89 为什么我得到这个89作为输出?

使用fflush(stdin)

因此,快速Googlesearchfflush(stdin)清除input缓冲区会显示许多网站警告不要使用它。 然而这正是我的CS教授如何教课程去做的。 使用fflush(stdin)有多糟? 我应该真的放弃使用它,即使我的教授正在使用它,它似乎工作完美无瑕?