文件操作
文件操作是 C 语言中的重要部分,它允许程序读取和写入文件中的数据。以下是文件操作的基本概念和常用函数。
1. 文件指针
在 C 语言中,文件通过 FILE
结构来处理。我们需要使用文件指针来操作文件。
2. 打开文件
使用 fopen()
函数打开文件。该函数的原型如下:
1
| FILE *fopen(const char *filename, const char *mode);
|
filename
: 要打开的文件名。
mode
: 文件打开模式,可以是以下之一:
"r"
: 以只读方式打开。
"w"
: 以写入方式打开(如果文件存在则清空文件,如果不存在则创建新文件)。
"a"
: 以追加方式打开(写入时数据将添加到文件末尾)。
"rb"
, "wb"
, "ab"
: 二进制模式。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12
| #include <stdio.h>
int main() { FILE *fp = fopen("example.txt", "w"); if (fp == NULL) { printf("文件打开失败!\n"); return 1; } fprintf(fp, "Hello, World!\n"); fclose(fp); return 0; }
|
3. 关闭文件
使用 fclose()
函数关闭已打开的文件,以释放系统资源。
1
| int fclose(FILE *stream);
|
示例代码
4. 读取文件
使用 fgetc()
、fgets()
和 fread()
函数读取文件中的数据。
1
| int fgetc(FILE *stream);
|
1
| char *fgets(char *str, int n, FILE *stream);
|
1
| size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
|
示例代码
1 2 3 4 5 6 7 8 9 10 11
| char buffer[100]; FILE *fp = fopen("example.txt", "r"); if (fp == NULL) { perror("文件打开失败"); }
if (fgets(buffer, 100, fp) != NULL) { printf("读取的内容: %s\n", buffer); }
fclose(fp);
|
5. 写入文件
使用 fputc()
、fputs()
和 fwrite()
函数向文件写入数据。
1
| int fputc(int char, FILE *stream);
|
1
| int fputs(const char *str, FILE *stream);
|
1
| size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
|
示例代码
1 2 3 4 5 6 7 8 9
| FILE *fp = fopen("output.txt", "w"); if (fp == NULL) { perror("文件打开失败"); }
fputs("Hello, World!", fp); fputc('\n', fp);
fclose(fp);
|
6. 文件定位
使用 fseek()
、ftell()
和 rewind()
函数定位文件指针。
1
| int fseek(FILE *stream, long offset, int whence);
|
1
| long ftell(FILE *stream);
|
1
| void rewind(FILE *stream);
|
示例代码
1 2 3 4 5
| FILE *fp = fopen("example.txt", "r"); fseek(fp, 0, SEEK_END); long size = ftell(fp); rewind(fp); fclose(fp);
|
7. 错误处理
在文件操作中,随时检查错误是很重要的。你可以使用 perror()
或 fprintf(stderr, ...)
来输出错误信息。
例子
1 2 3 4
| FILE *fp = fopen("nonexistent.txt", "r"); if (fp == NULL) { perror("文件打开错误"); }
|
8. 文件的其他操作
1
| int remove(const char *filename);
|
1
| int rename(const char *oldname, const char *newname);
|
总结
文件操作在 C 语言中是非常重要的一部分,掌握以上基本函数可以帮助你有效地读写文件。练习使用这些函数,尝试创建、读取和写入不同类型的文件,以加深对文件操作的理解。