Linux学习入门--I/O标准库二-程序员宅基地

《精通Linux C编程》第4.7章流缓冲中提到缓冲区自动刷新的情况:

105911_WpyP_3783667.png

但是在流被关闭时,并没有执行刷新,见测试代码:

#include <stdio.h>

int main(void)
{
    FILE *fp = NULL;
    FILE *fp1 = NULL;
    char buf[100] = {0};

    fp = fopen("./test.txt","w");  //打开一个文件,并写入两行数据
    if(fp == NULL)
    {
        perror("fopen");
    }
    fprintf(fp,"1.hello c!\n");
    fprintf(fp,"2.hello world!\n");

    /* 手动刷新
    fflush(fp); 
    */
    close(fp); //调用close关闭流

    if((fp1 = fopen("./test.txt","r+")) == NULL)  //重新打开文件
    {
        perror("fopen");
    }
 
    
    if(fgets(buf,100,fp1) == NULL)   //读取一行数据
    {
        if(feof(fp1))
        {
            printf("End of file\n");
        }
        else
        {
            printf("read failed\n");
        }
    }

    puts(buf);   //输出此行数据
    //fflush(fp1);
    fprintf(fp1,"3.new line data!\n");  //再写入一行数据
    //fputs("3.new line data!",fp);
    fgets(buf,10,fp1);   //再读一行数据
    puts(buf);
    //fflush(fp1);
    close(fp1);
    return 0;
}

执行结果:

110500_Cyoa_3783667.png

原因是写入的两行数据未及时缓冲到文件中,导致fgets读取不到数据,修改后的代码 在写入两行数据后,手动调用fflush函数,运行结果如下:

111038_b5qt_3783667.png

转载于:https://my.oschina.net/xiangxyq/blog/1631510

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33736649/article/details/91533247

智能推荐

Eclipse的常用快捷键_ecelipse 块复制-程序员宅基地

编辑相关快捷键 Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率。Eclipse中有如下一些和编辑相关的快捷键。 1. 【ALT+/】 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。 _ecelipse 块复制

华为鸿蒙系统面对困难,缩水2亿!在关键时刻,华为突然改口,鸿蒙系统面临2大难点...-程序员宅基地

作为国内首个自研系统,华为的鸿蒙OS一直备受关注。然而,自2019年问世以来,鸿蒙系统可谓是波折不断,正式推送时间更是多次后延。华为突然改口根据此前华为官方的消息,鸿蒙系统将在4月份正式与用户见面。按照华为的时间表,如今正是鸿蒙发布的关键时刻,正当花粉们期待之时,华为官方却突然改口。在4月12日的华为分析师大会上,华为轮值董事长徐直军表示,2021年将有40多个主流品牌,超1亿台设备接入鸿蒙操作系..._鸿蒙开发的设计与实现的重难点

vue配置二级目录&vue-axios跨域办法&谷歌浏览器设置跨域-程序员宅基地

一。根据官方建议,dist打包的项目文件放在服务器根目录下,但是很多时候,我们并不能这样做,当涉及到二级目录设置多层深埋的时候,就需要在webpack配置文件里去设置一下了。在webpack.config.js(config—>index.js)文件里设置: build: { // Template for index.html index: path....

Javascript网课笔记(1)-程序员宅基地

先谈谈我对js的理解吧。js就是一门编程语言。哈哈没学啥也不知道。以下是我第一次上网课的学习笔记以及我自己的一些小总结。1.javascript的定义是WEB开发领域中的一种功能强大的编程语言,是一种可以嵌入到网页中的编程语言,用来控制浏览器行为。2.javascript的作用主要用于开发交互式的web页面,使网页的互动性更强,用户体验更好。3.javascript的特点js内嵌于..._javascript网课

跟锦数学2016年-程序员宅基地

(161231) 已知函数 $f(x)$ 的反函数是 $\varphi(y)$, 写出用 $f',f'',f'''$ 表示 $\varphi'$, $\varphi''$, $\varphi'''$ 的表达式.(161230) 设 $\sed{a_n}$ 递减趋于零, 试证: $$\bex \vsm{n}\f{a_n}{n}<\infty\lra a_n=O\sex{\...

Java计算组合数以及生成组合排列_java计算排列组合数的值-程序员宅基地

前言组合数计算公式法逐个相除法(错误)逐个相除法修正版素数幂乘法基本公式法平方差连乘法组合恒等法简单递归法杨辉三角法杨辉三角优化法二进制法组合数计算小结获取数组的组合排列二进制法基本迭代法从后向前迭代法(Matlab版本)从后向前优化法组合排列小结后记前言 最近学习了一下排列组合的相关知识,组合数..._java计算排列组合数的值

随便推点

大话数据结构-程序员宅基地

大话数据结构数据结构:相互之间存在一种或多种特定关系的数据元素的集合。第一章 概述3.数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间关系和操作等相关问题的学科。4.数据:描述客观事物的符号,是计算机中可操作的对象,可以被计算机识别,并输入给计算机处理的符号集合。(数值类型:整型、实型,非数值类型:声音、图像、视频,数据:即符号。1—可输入到计算机中,2—能够被计算机程序处理)数据元素:组成数据的、有一定意义的基本单位。数据项:一个数据元素可由多个数据项组成。(数据_大话数据结构

krpano全景之内置函数---asyncloop roundval 等(不定期更新)_krpano asyncloop-程序员宅基地

1.asyncloop首先是官方demo中的代码应用场景:(加载全景时的load...效果) set(loadingpercent_isloading, true); set(layer[loadingpercent_text].visible, true); asyncloop(loadingpercent_isloading, mul(pv, progress.pro_krpano asyncloop

YTU OJ C# 3437: 小豪要增重_和你熟的博客-程序员宅基地

YTU OJ C# 3437: 小豪要增重using System;class Program{ static void Main(String[] args) { var str1 = (Console.ReadLine()).Split(' '); var a = Convert.ToInt32(str1[0]); var b = Convert.ToInt32(str1[1]); var year = 0;

Java字符串-程序员宅基地

1.字符串的压缩public class Demon1 {public static String stringCompress(String str) { int count = 1; int low = 0; int high = 0; char c; StringBuilder stb = new StringBuilder(); while(low...

JAVA获取当前时间的前一天或者前几天时间_java获取当前日期前多少天的时间-程序员宅基地

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date=new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); ca..._java获取当前日期前多少天的时间

java系统高并发解决方案之图片服务器分离_java 后台图片数量太多 处理方案-程序员宅基地

http://blog.csdn.net/jimmy609/article/details/37909013网上找的,感觉还不错1 介绍现在很多的网站上都会用到大量的图片,而图片是网页传输中占主要的数据量,也是影响网站性能的主要因素。因此很多网站都会将图片存储从网站中分离出来,另外架构一个或多个服务器来存储图片,将图片放到一个虚拟目录中,而网页上的图片都_java 后台图片数量太多 处理方案