惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 司徒正美
Last Week in AI
Last Week in AI
爱范儿
爱范儿
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
量子位
V
V2EX
博客园 - 叶小钗
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog

博客园 - 小默同学

makefile 文件的写法 tkinter教程 基本黑客技术 window下开机自启动.bat文件和后台启动.bat文件 django 用 uvicorn 部署 python 声音去噪处理 basis of PHP DBMA about mysql 免费文字转语音工具 折半查找python代码实现 c:\windows\temp\ccvjvr7w.o:problemfour.cpp:(.text+0x17): undefined reference to `std::basic_istream< - 小默同学 Android连接第三方模拟器 vscode下搭建springboot python jwt 一篇文章极速复习drf知识点 LCD1602代码记录 外部排序 {&quot;detail&quot;:[{&quot;loc&quot;:[&quot;body&quot;],&quot;msg&quot;:&quot;field required&quot;,&quot;type&quot;:&quot;value_error.missing&quot;}]} 防止win10系统把破解软件当成病毒自动删除keil的破解软件 ERROR 1366 (HY000): Incorrect string value: '\xC4\xE3\xBA\xC3' for column 'p - 小默同学
C语言文件操作
小默同学 · 2024-06-08 · via 博客园 - 小默同学

一、对应函数

  1. fprintf
fprintf(stdout, "hello, %s", "world");
  1. sprintf
char buf[20];
sprintf(buf, "hello, %s", "world");
  1. 文件缓冲区大小
FILE *fp = stdin;
char str[20];
scanf("%s", str);
printf("size is %d", fp->_ftr - fp->_base);

二、缓存分类

2.1 全缓存

全缓存只针对于文件,包括输出重定向到文件 1>log.txt

全缓存只有三种情况下会刷新缓存区:

  1. 达到最大内存 \(2^{12}\)
  2. 程序正常结束
  3. fflush 刷新缓存
fflush(stdout);

2.2 行缓存

行缓存针对于控制台输入输出。比如 stdinstdout

行缓存有四种情况,比全缓存多一种,即:

  • 遇到 \n 换行符的时候会情空缓存

2.3 不缓存

不缓存的例子是 stderr

三、读写文件

读写文件的例子有:

#include <perror.h>

FILE *fp = fopen(argv[1], 'r');
if(NULL == fp) {
    perror("fail to open");
    return -1;
}
while(1) {
    ch = fgetc(fp);
    if(EOF == ch) 
        break;
    fputc(ch, stdout);
}
  1. fread/fwrite

    1. 读取/写入对象的指针首地址
    2. 一个对象的大小
    3. 对象个数
    4. 要被读取/写入的流
  2. fseek

    1. 文件流指针
    2. 偏移量,大于 0 往后,小于 0 往前
    3. 偏移起点
      • SEEK_SET:开始
      • SEEK_CUR:当前
      • SEEK_END:结束