【C语言】文件输入输出操作

打开文件

  • fopen(): 创建一个新文件/打开一个已有文件, 初始化类型FILE的一个对象, 包含所有用于控制流的必要信息
    • FILE *fopen(const char *filename, const char *mode);
    • 模式:
      • r: 打开一个已有文本文件, 允许读取
      • w: 打开一个文本文件, 允许写入; 若无文件则新建一个; 若有则重新写入
      • a: 打开一个文本文件, 追加模式写入; 若无文件则新建一个; 追加内容
      • r+: 打开一个文本文件, 允许读写
      • w+: 打开一个文本文件, 允许读写; 无文件则新建一个; 若有则重新写入
      • a+: 打开一个文本文件, 允许读写; 无文件则新建一个; 读取从头开始, 写入追加

关闭文件

  • fclose():
    • int fclose(FILE *fp);
    • 关闭成功返回0
    • 关闭失败返回EOF

写入文件

  • fputc(): 把参数c的字符值写入fp指向的输出流, 成功则返回写入字符, 失败则返回EOF
    • int fputc(int c, FILE *fp);
  • fputs(): 将字符串s写入fp指向的输出流, 成功则返回非负值, 失败则返回EOF
    • int fputs(const char *s, FILE *fp);
  • fprintf(): 一个字符串写入文件
    • int fprintf(FILE *fp, const char *format, ...)
#include <stdio.h>
int main()
{
    FILE *fp = NULL;
    fp = fopen("/tmp/test.txt", "w+");
    fputs("Shenzhen", fp);
    fprintf(fp, "Tianjin");
    fclose(fp);
}

读取文件

  • fgetc(): 从fp指向的输入文件读取一个字符, 返回读取的字符, 失败则返回EOF
    • int fget(FILE * fp);
  • fgets(): 从fp指向的输入流读取n-1个字符, 若途中遇到换行符/文件末尾EOF, 返回读取到的字符
    • char *fgets(char *buf, int n, FILE *fp);
  • fscanf(): 从文件读取字符串, 首个空格/换行符停止
    • int fscanf(FILE *fp, const char *format, ...)
#include <stdio.h>

#include <stdio.h>
 
int main()
{
   FILE *fp = NULL;
   char buff[255];
 
   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1: %s\n", buff );
 
   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);
}

首先,fscanf()方法只读取了This,因为它在后边遇到了一个空格.其次,调用fgets()读取剩余的部分,直到行尾.最后,调用fgets()完整地读取第二行.

猜你喜欢

转载自blog.csdn.net/weixin_46143152/article/details/126683701