文件操纵系列函数详解+代码展示

[复制链接]
发表于 2025-12-13 09:10:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

系列文章目次

🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼
🎉🎉我的C语言初阶合集:C语言初阶合集,盼望能帮到你!!!😍 😍
🔍🔍我的C语言进阶合集:我的C语言进阶合集,等待你的点击!!!🌈🌈



前言

   各位博友,各人好!👋 本日我为各人总结C语言中的文件操纵📁。
文件操纵是编程中的告急部分,它允许我们读写存储在磁盘上的数据。
我将详细先容文件打开、读写、关闭等根本操纵,
以及一些留意事项,助你轻松把握文件处置处罚本领!📝

  
一、 文件打开

   在C语言中,文件操纵是通过标准库函数来实现的。
起首,我们须要包罗头文件<stdio.h>。

  

  • 函数原型
  1. FILE *fopen(const char *filename, const char *mode);
复制代码
  filename:要打开的文件名(包罗路径)。
    mode:打开文件的模式,如读、写、追加等。
  

  • 常见的模式
模式(mode)寄义r只读模式,文件必须存在。w只写模式,文件不存在则创建,存在则清空。a追加模式,文件不存在则创建,存在则在文件末端追加数据。r+读写模式,文件必须存在。w+读写模式,文件不存在则创建,存在则清空。a+读写模式,文件不存在则创建,存在则在文件末端追加数据,但可以读取文件。

  • 示例:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     // 尝试以写入模式打开名为 "test.txt" 的文件
  5.     FILE* pf = fopen("test.txt", "w");
  6.     // 如果文件打开失败,pf 将等于 NULL
  7.     if (pf == NULL)
  8.     {
  9.         // 使用 perror 打印错误信息,"fopen"是错误信息的前缀
  10.         perror("fopen");
  11.         // 返回 非零值表示程序异常退出
  12.         return 1;
  13.     }
  14.     // 关闭文件,释放资源
  15.     fclose(pf);
  16.     // 将 pf 设置为 NULL,避免野指针问题
  17.     pf = NULL;
  18.     // 返回 0 表示程序正常退出
  19.     return 0;
  20. }
复制代码
二、 文件关闭



  • 函数原型
  1. int fclose(FILE *stream);
复制代码
fclose:关闭文件,开释资源。


  • 示例:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     // 尝试以读取模式打开名为"test.txt"的文件
  5.     FILE* pf = fopen("test.txt", "r");
  6.     // 如果文件打开失败, pf 将等于 NULL
  7.     if (pf == NULL)
  8.     {
  9.         // 使用 perror 打印错误信息, "fopen" 是错误信息的前缀
  10.         perror("fopen");
  11.         // 返回非零值表示程序异常退出
  12.         return 1;
  13.     }
  14.     // 关闭文件,释放资源
  15.     fclose(pf);
  16.     // 将 pf 设置为 NULL,避免野指针问题
  17.     pf = NULL;
  18.     // 返回 0 表示程序正常退出
  19.     return 0;
  20. }
复制代码
三、文件读写

写文件



  • 函数原型
  1. int fputc(int c, FILE* stream);
  2. int fputs(const char* str, FILE* stream);
  3. int fprintf(FILE* stream, const char* format, ...);
  4. size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* stream);
复制代码
fputc:写入单个字符。
fputs:写入字符串。
fprintf:格式化写入,类似于printf。
fwrite:写入二进制数据。



  • 示例:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     // 尝试以写入模式打开名为"test.txt"的文件
  5.     FILE* pf = fopen("test.txt", "w");
  6.     // 如果文件打开失败,pf 将等于 NULL
  7.     if (pf == NULL)
  8.     {
  9.         // 使用 perror 打印错误信息,"fopen"是错误信息的前缀
  10.         perror("fopen");
  11.         // 返回非零值表示程序异常退出
  12.         return 1;
  13.     }
  14.     // 使用 fputs 函数将字符串"Hello, World!\n"写入文件
  15.     fputs("Hello, World!\n", pf);
  16.     // 使用 fprintf 函数将格式化的字符串和数字 66 写入文件
  17.     fprintf(pf, "Number: %d\n", 66);
  18.     // 关闭文件,释放资源
  19.     fclose(pf);
  20.     // 将 pf 设置为 NULL,避免野指针问题
  21.     pf = NULL;
  22.     // 返回 0 表示程序正常退出
  23.     return 0;
  24. }
复制代码
读文件



  • 函数原型
  1. int fgetc(FILE* stream);
  2. char* fgets(char* str, int n, FILE* stream);
  3. int fscanf(FILE* stream, const char* format, ...);
  4. size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream);
复制代码
fgetc:读取单个字符。
fgets:读取字符串。
fscanf:格式化读取,类似于scanf。
fread:读取二进制数据。



  • 示例:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char buf[20]; // 定义一个字符数组,用于存储从文件中读取的每一行
  5.     int n;        // 定义一个整数变量,用于存储从文件中读取的整数
  6.     FILE* pf = fopen("test.txt", "r"); // 尝试以读取模式打开名为"test.txt"的文件
  7.     if (pf == NULL) // 如果文件打开失败, pf 将等于 NULL
  8.     {
  9.         perror("fopen"); // 使用 perror 打印错误信息,"fopen"是错误信息的前缀
  10.         return 1; // 返回非零值表示程序异常退出
  11.     }
  12.     // 使用 fgets 循环读取文件的每一行,直到到达文件末尾
  13.     while (fgets(buf, sizeof(buf), pf) != NULL)
  14.     {
  15.         printf("%s", buf); // 打印读取的每一行
  16.     }
  17.     rewind(pf); // 将文件指针重新定位到文件开头,以便重新读取文件
  18.     fscanf(pf, "n: %d", &n); // 从文件中读取格式化的整数,假设格式为 "n: 数字"
  19.     printf("n: %d\n", n); // 打印读取的整数
  20.     fclose(pf); // 关闭文件,释放资源
  21.     pf = NULL; // 将 pf 设置为 NULL,避免野指针问题
  22.     return 0; // 返回 0 表示程序正常退出
  23. }
复制代码
四、留意事项

1、查抄返回值:
   文件操纵函数(如fopen、fclose、fread、fwrite等),
通常都有返回值,用于指示操纵是否乐成。
务必查抄这些返回值。

  2、文件指针:
   文件操纵依靠于文件指针(FILE *),
确保文件指针在利用前已经精确初始化,
并在利用后精确关闭。

  3、缓冲区:
   利用fgets和fputs等函数时,要留意缓冲区的巨细,克制缓冲区溢出。
  4、文件模式:
   选择精确的文件模式非常告急,特殊是写模式和追加模式,
它们的举动是差异的。

  5、错误处置处罚:
   利用perror或strerror等函数来处置处罚文件操纵中的错误,
提供有效的错误信息。

  6、二进制文件:
   对于二进制文件,利用fread和fwrite举行读写,
克制利用文本模式函数(如fgets和fputs)。

  
END

每天都在学习的路上!
On The Way Of Learning

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表