在C语言中,文件操作是通过一系列的标准库函数来完成的,这些函数定义在<stdio.h>
头文件中。以下是C语言中文件操作的一些基本方法:
- 打开文件 -
FILE *fopen(const char *path, const char *mode);
- 使用
fopen
函数以指定的模式(mode
)打开文件。如果文件成功打开,函数返回一个指向FILE
的指针;如果失败,则返回NULL
。模式可以是"r"
(只读)、"w"
(只写,文件不存在则创建,存在则清空)、"a"
(追加,文件不存在则创建)、"r+"
(读写,文件必须存在)、"w+"
(读写,文件不存在则创建,存在则清空)等。
- 使用
- 关闭文件 -
int fclose(FILE *stream);
fclose
函数用于关闭一个打开的文件。成功时返回0
,失败时返回EOF
。关闭文件是一个好习惯,可以释放文件相关的资源并确保所有的数据都被正确地写入到文件中。
- 读写文件
- 字符读写:
int fgetc(FILE *stream);
(从文件读取一个字符)、int fputc(int char, FILE *stream);
(向文件写入一个字符)。 - 行读写:
char *fgets(char *str, int n, FILE *stream);
(从文件读取一行)、int fputs(const char *str, FILE *stream);
(向文件写入一行)。 - 块读写:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
(从文件读取数据块)、size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
(向文件写入数据块)。
- 字符读写:
- 定位文件
int fseek(FILE *stream, long offset, int whence);
- 用于移动文件内的位置指针到指定位置。whence
可以是SEEK_SET
(文件开头)、SEEK_CUR
(当前位置)、SEEK_END
(文件末尾)。long ftell(FILE *stream);
- 返回给定文件流stream
的当前文件位置。void rewind(FILE *stream);
- 将文件内部的位置指针重新指向一个流的开头。
- 文件状态
int feof(FILE *stream);
- 检查是否已到达文件末尾(EOF)。int ferror(FILE *stream);
- 检查读写过程中是否发生错误。void clearerr(FILE *stream);
- 清除文件流stream
的错误和文件结束标志。
- 格式化输入输出
int fprintf(FILE *stream, const char *format, ...);
- 向文件写入格式化的数据。int fscanf(FILE *stream, const char *format, ...);
- 从文件读取格式化的数据。
这些是C语言文件操作的基本方法。通过组合使用这些函数,可以执行复杂的文件处理任务。
例子1:
运行代码:
#include<stdio.h>
int main() {
FILE *fp;
char ch[100];
int i = 0;
fp = fopen("D:\\test.txt", "r");
if (fp == NULL) {
printf("fail to open!\n");
return 1;
}
while (i < 99 && (ch[i] = fgetc(fp)) != EOF) {
i++;
}
ch[i] = '\0';
for (int k = i - 1; k >= 0; k--) {
printf("%c\n", ch[k]);
}
fclose(fp);
return 0;
}