如何解决如何使setvbuf中的_IOLBF选项起作用
网络上有许多示例,介绍了如何使用 setvbuf 实用程序使用完全缓冲/未缓冲的流。但是,我正在努力使用行缓冲选项。
假设我们有一个文本文件“ nums.txt”,其中包含两行整数。
>$ cat nums.txt
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19
我想读取文件,并使用行缓冲选项将流输出到stdout。
观察:两行同时打印。
预期的行为:第一行将打印到标准输出,然后(一秒钟后)打印到第二行。
代码如下:
int main(int argc,char *argv[]) {
FILE *fp;
int BUFSIZE = 25;
char buffer[BUFSIZE];
if (argc != 2) {
fprintf(stderr,"Usage: %s <filename>\n",argv[0]);
return 1;
}
else { fp = fopen(argv[1],"r");
setvbuf ( fp,buffer,_IOLBF,BUFSIZE );
while (fgets(buffer,sizeof(buffer),fp) != 0)
{
fputs(buffer,stdout);
fflush(fp);
sleep(1);
}
fclose (fp);
}
return 0;
}
可以通过以下方式调用程序
>$ ./myprogram nums.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。