C语言文件操作

一、对应函数

  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:结束
posted @ 2024-06-08 19:59  小默同学  阅读(1)  评论(0编辑  收藏  举报