C 语言编程 — 文件操作
Posted 范桂飓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言编程 — 文件操作相关的知识,希望对你有一定的参考价值。
目录
文章目录
- 目录
- fopen() 创建或打开文件
- fclose() 关闭文本文件
- fputc() / fputs() / fprintf() 写文本文件
- fgetc() / fgets() / fscanf() 读文本文件
fopen() 创建或打开文件
fopen() 用于创建一个新的文件或者打开一个已有的文件,并返回一个 FILE 类型,其包含了所有用来控制文件数据流的必要的信息。
FILE *fopen(const char * filename, const char * mode);
对于文本文件,支持以下 mode 类型;而对于二进制文件,则需使用下面的访问模式来替代:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
fclose() 关闭文本文件
fclose() 会清空缓冲区中的数据、关闭文件、并释放用于该文件的所有内存。如果成功关闭文件,它会返回 0;如果关闭文件时发生错误,则返回 EOF。EOF 是一个定义在头文件 stdio.h 中的常量。
int fclose(FILE *fp);
fputc() / fputs() / fprintf() 写文本文件
- fputc() 用于把 int c 对应的字符值写入到 fp 所指向的输出流中。如果写入成功,它会返回写入的字符值;如果发生错误,则返回 EOF。
int fputc(int c, FILE *fp);
- fputs() 用于把一个以 null(“\\0")结尾的字符串写入到 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+");
fprintf(fp, "This is testing for fprintf...\\n");
fputs("This is testing for fputs...\\n", fp);
fclose(fp);
return 0;
fgetc() / fgets() / fscanf() 读文本文件
- fgetc() 用于从 fp 所指向的输入文件中读取一个字符值,返回值是读取的字符值,如果发生错误则返回 EOF。
int fgetc(FILE *fp);
- fgets() 用于从 fp 所指向的输入流中读取字符串(n-1 个字符值)。它会把读取的字符串复制到 buf 缓冲区,并在最后追加一个 null(“\\0")字符来终止字符串。如果这个函数在读取最后一个字符之前就遇到一个换行符 “\\n" 或文件的 EOF 末尾,则只会返回读取到的字符串,包括换行符。
char *fgets(char *buf, int n, FILE *fp);
- fscanf() 用于从文件中读取字符串,但是在遇到第一个空格和换行符时,它会停止读取。
int fscanf(FILE *fp, const char *format, ...)
示例:
#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, fp);
printf("2: %s\\n", buff);
fgets(buff, 255, fp);
printf("3: %s\\n", buff);
fclose(fp);
return 0;
运行:
1: This
2: is testing for fprintf...
3: This is testing for fputs...
- fscanf() 只读取了 “This“,因为它在后边遇到了一个空格。
- fgets() 读取了剩余的部分,直到行尾。
- fgets() 完整地读取第二行。
以上是关于C 语言编程 — 文件操作的主要内容,如果未能解决你的问题,请参考以下文章
C 语言文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )