STLG_01_17_程序设计C语言 - 文件管理
在C语言中,文件管理涉及文件的打开、读写、关闭等操作。C语言提供了标准库函数来处理文件操作,其中最常用的函数包括 fopen()
、fclose()
、fread()
、fwrite()
、fprintf()
、fscanf()
等。
1. 打开文件 (fopen
)
fopen()
用于打开一个文件,并返回一个指向该文件的指针(FILE*
)。如果文件打开失败,fopen()
将返回 NULL
。
FILE *fopen(const char *filename, const char *mode);
filename
:文件路径或文件名。mode
:打开文件的模式,常见模式如下:"r"
:以只读方式打开文件,文件必须存在。"w"
:以写入方式打开文件,如果文件不存在则创建,如果文件已存在则清空内容。"a"
:以追加方式打开文件,如果文件不存在则创建,如果文件已存在则在文件末尾追加内容。"r+"
:以读写方式打开文件,文件必须存在。"w+"
:以读写方式打开文件,如果文件不存在则创建,如果文件已存在则清空内容。"a+"
:以读写方式打开文件,如果文件不存在则创建,读取从文件开始,写入在文件末尾追加。
2. 关闭文件 (fclose
)
fclose()
用于关闭一个打开的文件,释放与该文件相关联的资源。
int fclose(FILE *stream);
stream
:指向已打开文件的指针。成功关闭返回0
,失败返回EOF
。
3. 读取文件 (fread
)
fread()
用于从文件中读取数据。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr
:指向存放读取数据的缓冲区的指针。size
:每个数据项的大小(字节)。nmemb
:要读取的数据项的数量。stream
:指向已打开文件的指针。
返回值:实际读取的数据项数量。如果返回值小于 nmemb
,则可能发生了错误或到达了文件末尾。
4. 写入文件 (fwrite
)
fwrite()
用于将数据写入文件。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr
:指向要写入数据的缓冲区的指针。size
:每个数据项的大小(字节)。nmemb
:要写入的数据项的数量。stream
:指向已打开文件的指针。
返回值:实际写入的数据项数量。如果返回值小于 nmemb
,则可能发生了错误。
5. 格式化输入输出 (fprintf
和 fscanf
)
fprintf()
和 fscanf()
用于格式化文件的输入输出操作。
5.1 fprintf
fprintf()
将格式化的数据写入文件。
int fprintf(FILE *stream, const char *format, ...);
stream
:指向已打开文件的指针。format
:格式化字符串,类似于printf()
中的格式。
5.2 fscanf
fscanf()
从文件中读取格式化的数据。
int fscanf(FILE *stream, const char *format, ...);
stream
:指向已打开文件的指针。format
:格式化字符串,类似于scanf()
中的格式。
6. 文件定位 (fseek
和 ftell
)
6.1 fseek
fseek()
用于设置文件指针的位置。
int fseek(FILE *stream, long offset, int whence);
stream
:指向已打开文件的指针。offset
:偏移量,表示相对于whence
的偏移量。whence
:起始位置,可以是以下值之一:SEEK_SET
:文件开头。SEEK_CUR
:当前位置。SEEK_END
:文件末尾。
6.2 ftell
ftell()
用于获取文件指针的当前位置。
long ftell(FILE *stream);
stream
:指向已打开文件的指针。返回值为当前文件指针的位置。
7. 文件结尾检查 (feof
)
feof()
用于检查文件指针是否到达文件末尾。
int feof(FILE *stream);
stream
:指向已打开文件的指针。如果到达文件末尾,返回非零值;否则返回0
。
8. 错误检查 (ferror
)
ferror()
用于检查文件操作是否发生了错误。
int ferror(FILE *stream);
stream
:指向已打开文件的指针。如果发生错误,返回非零值;否则返回0
。
示例代码
#include <stdio.h>
int main() {
FILE *file;
char buffer[100];
// 打开文件以写入模式
file = fopen("example.txt", "w");
if (file == NULL) {
perror("Failed to open file");
return 1;
}
// 写入数据到文件
fprintf(file, "Hello, World!\n");
fclose(file);
// 打开文件以读取模式
file = fopen("example.txt", "r");
if (file == NULL) {
perror("Failed to open file");
return 1;
}
// 读取数据并输出
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer);
}
fclose(file);
return 0;
}
总结
C语言的文件管理涉及文件的打开、读写、关闭等操作,常用的函数包括 fopen()
、fclose()
、fread()
、fwrite()
、fprintf()
、fscanf()
等。通过这些函数,可以实现对文件的灵活管理。