马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
系列文章目次
🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼
🎉🎉我的C语言初阶合集:C语言初阶合集,盼望能帮到你!!!😍 😍
🔍🔍我的C语言进阶合集:我的C语言进阶合集,等待你的点击!!!🌈🌈
前言
各位博友,各人好!👋 本日我为各人总结C语言中的文件操纵📁。
文件操纵是编程中的告急部分,它允许我们读写存储在磁盘上的数据。
我将详细先容文件打开、读写、关闭等根本操纵,
以及一些留意事项,助你轻松把握文件处置处罚本领!📝
一、 文件打开
在C语言中,文件操纵是通过标准库函数来实现的。
起首,我们须要包罗头文件<stdio.h>。
- FILE *fopen(const char *filename, const char *mode);
复制代码 filename:要打开的文件名(包罗路径)。
mode:打开文件的模式,如读、写、追加等。
模式(mode)寄义r只读模式,文件必须存在。w只写模式,文件不存在则创建,存在则清空。a追加模式,文件不存在则创建,存在则在文件末端追加数据。r+读写模式,文件必须存在。w+读写模式,文件不存在则创建,存在则清空。a+读写模式,文件不存在则创建,存在则在文件末端追加数据,但可以读取文件。
- #include <stdio.h>
- int main()
- {
- // 尝试以写入模式打开名为 "test.txt" 的文件
- FILE* pf = fopen("test.txt", "w");
- // 如果文件打开失败,pf 将等于 NULL
- if (pf == NULL)
- {
- // 使用 perror 打印错误信息,"fopen"是错误信息的前缀
- perror("fopen");
- // 返回 非零值表示程序异常退出
- return 1;
- }
- // 关闭文件,释放资源
- fclose(pf);
- // 将 pf 设置为 NULL,避免野指针问题
- pf = NULL;
- // 返回 0 表示程序正常退出
- return 0;
- }
复制代码 二、 文件关闭
- int fclose(FILE *stream);
复制代码 fclose:关闭文件,开释资源。
- #include <stdio.h>
- int main()
- {
- // 尝试以读取模式打开名为"test.txt"的文件
- FILE* pf = fopen("test.txt", "r");
- // 如果文件打开失败, pf 将等于 NULL
- if (pf == NULL)
- {
- // 使用 perror 打印错误信息, "fopen" 是错误信息的前缀
- perror("fopen");
- // 返回非零值表示程序异常退出
- return 1;
- }
- // 关闭文件,释放资源
- fclose(pf);
- // 将 pf 设置为 NULL,避免野指针问题
- pf = NULL;
- // 返回 0 表示程序正常退出
- return 0;
- }
复制代码 三、文件读写
写文件
- int fputc(int c, FILE* stream);
- int fputs(const char* str, FILE* stream);
- int fprintf(FILE* stream, const char* format, ...);
- size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* stream);
复制代码 fputc:写入单个字符。
fputs:写入字符串。
fprintf:格式化写入,类似于printf。
fwrite:写入二进制数据。
- #include <stdio.h>
- int main()
- {
- // 尝试以写入模式打开名为"test.txt"的文件
- FILE* pf = fopen("test.txt", "w");
- // 如果文件打开失败,pf 将等于 NULL
- if (pf == NULL)
- {
- // 使用 perror 打印错误信息,"fopen"是错误信息的前缀
- perror("fopen");
- // 返回非零值表示程序异常退出
- return 1;
- }
- // 使用 fputs 函数将字符串"Hello, World!\n"写入文件
- fputs("Hello, World!\n", pf);
- // 使用 fprintf 函数将格式化的字符串和数字 66 写入文件
- fprintf(pf, "Number: %d\n", 66);
- // 关闭文件,释放资源
- fclose(pf);
- // 将 pf 设置为 NULL,避免野指针问题
- pf = NULL;
- // 返回 0 表示程序正常退出
- return 0;
- }
复制代码 读文件
- int fgetc(FILE* stream);
- char* fgets(char* str, int n, FILE* stream);
- int fscanf(FILE* stream, const char* format, ...);
- size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream);
复制代码 fgetc:读取单个字符。
fgets:读取字符串。
fscanf:格式化读取,类似于scanf。
fread:读取二进制数据。
- #include <stdio.h>
- int main()
- {
- char buf[20]; // 定义一个字符数组,用于存储从文件中读取的每一行
- int n; // 定义一个整数变量,用于存储从文件中读取的整数
- FILE* pf = fopen("test.txt", "r"); // 尝试以读取模式打开名为"test.txt"的文件
- if (pf == NULL) // 如果文件打开失败, pf 将等于 NULL
- {
- perror("fopen"); // 使用 perror 打印错误信息,"fopen"是错误信息的前缀
- return 1; // 返回非零值表示程序异常退出
- }
- // 使用 fgets 循环读取文件的每一行,直到到达文件末尾
- while (fgets(buf, sizeof(buf), pf) != NULL)
- {
- printf("%s", buf); // 打印读取的每一行
- }
- rewind(pf); // 将文件指针重新定位到文件开头,以便重新读取文件
- fscanf(pf, "n: %d", &n); // 从文件中读取格式化的整数,假设格式为 "n: 数字"
- printf("n: %d\n", n); // 打印读取的整数
- fclose(pf); // 关闭文件,释放资源
- pf = NULL; // 将 pf 设置为 NULL,避免野指针问题
- return 0; // 返回 0 表示程序正常退出
- }
复制代码 四、留意事项
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
|