在C语言中,文件操作是一系列重要且功能强大的功能,主要通过标准库<stdio.h>中的函数实现。以下是一些核心的文件操作函数及其详细说明:
一、 文件的打开与创建:fopen()
1.原型:FILE *fopen(const char *filename, const char *mode);
2.描述:fopen函数用于打开一个已经存在的文件或者创建一个新文件,根据指定的模式进行操作。
3.参数:
1.filename:要打开的文件名。
2.mode:指定文件的操作模式,常见的模式有:
1."r":只读方式打开;文件必须存在。
2."w":写入方式打开;若文件存在则清空重新写入,若不存在则创建新文件。
3."a":追加方式打开;若文件不存在则创建。
4."r+":读写方式打开;文件必须存在。
5."w+":读写方式打开;若文件存在则清空重新写入,若不存在则创建新文件。
6."a+":读写方式打开,从文件末尾开始追加;若文件不存在则创建。
4.返回值:如果成功,返回指向FILE结构体的指针;如果失败,返回NULL。
示例:
二、 写入文件:fwrite(), fprintf(), fputc(), fputs()
1.fwrite():二进制写入,适合任何类型的数据。
1)函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
2)描述: 向文件写入指定数量的字节。
3)ptr: 要写入的数据的指针。
4)size: 每个元素的大小。
5)nmemb: 元素的数量。
6)stream: 目标文件流。
7)返回值: 成功写入的元素数量;出错或磁盘满返回0
2.fprintf():格式化写入,通常用于文本数据。
1)函数原型:int fprintf(FILE *stream, const char *format, ...);
2)描述: 根据格式化字符串向文件写入数据。
3)参数:stream: 文件流指针。format: 格式化字符串。
4)...: 可变参数列表,对应格式化字符串中的占位符。
5)返回值: 成功则写入的字符数;出错则返回负数。
3.fputc():写入单个字符。
1)函数原型:int fputc(int c, FILE *stream);
2)描述: 向文件写入一个字符。
3)参数:c: 要写入的字符。stream: 文件流指针。
4)返回值: 写入的字符;出错返回EOF(通常为-1)。
4.fputs():写入字符串。
1)函数原型:int fputs(const char *s, FILE *stream);
2)描述: 向文件写入一个字符串。
3)参数:s: 字符串指针。stream: 文件流指针。
4)返回值: 成功写入则返回非负值;出错返回EOF。
示例:
三、 读取文件:fread(), fgets(), fscanf(), fgetc()
1.fread():二进制读取,适合读取任何类型的数据。
1)函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
2)描述: 从文件读取数据。
3)参数:ptr: 存储读取数据的指针。
size: 每个元素的大小。
nmemb: 要读取的元素数量。
stream: 文件流指针。
4)返回值: 实际读取的元素数量;读取失败或文件结束返回0。
2.fgets():安全地读取一行文本。
1)函数原型:char *fgets(char *s, int n, FILE *stream);
2)描述: 从文件读取至多n-1个字符(含终止符)到字符串s。
3)参数:s: 目标字符串。n: 最大读取字符数。stream: 文件流指针。
4)返回值: 成功读取的字符串指针;读取失败或文件结束返回NULL
3.fscanf():格式化读取,适合读取文本数据。
1)函数原型:int fscanf(FILE *stream, const char *format, ...);
2)描述: 根据格式化字符串从文件读取数据。
3)参数:stream: 文件流指针。format: 格式化字符串。...: 变长参数列表,用于存储读取的数据。
4)返回值: 成功匹配和赋值的项目数;没有匹配或读取错误返回EOF
4.fgetc():读取单个字符。
1)函数原型int fgetc(FILE *stream);
2)描述: 从文件读取单个字符。参数:stream: 文件流指针。
3)返回值: 读取的字符;读取失败或文件结束返回EOF。
示例:
四、 文件指针操作:fseek(), rewind(), ftell()
1.fseek():设置文件位置指针。
1)函数原型:int fseek(FILE *stream, long offset, int whence);
2)描述: 设置文件位置指示器。
3)参数:stream: 文件流指针。
4)offset: 相对于whence指定的位置偏移量。
5)whence: 基准位置,可以是SEEK_SET(从文件头)、SEEK_CUR(当前位置)、SEEK_END(文件尾)。
6)返回值: 成功则返回0;失败返回非零值。
2.rewind():将文件位置指针重置到文件起始位置
1)函数原型:void rewind(FILE *stream);
2)描述: 将文件位置指示器重置到文件开头。
3)参数:stream: 文件流指针。
4)返回值: 无。
3.ftell():获取当前文件位置指针的位置。
1)函数原型:long ftell(const FILE *stream);
2)描述: 获取文件位置指示器的当前位置。
3)参数:stream: 文件流指针。
4)返回值: 当前文件位置;出错或到达文件末尾返回-1L。
示例:
五、文件关闭:fclose()
1.原型:int fclose(FILE *stream);
2.描述:关闭由stream指定的文件。
3.返回值:成功返回0,出错返回EOF
六、完整示例
以上则是有关文件操作的基本函数,但实际应用中可能还需要考虑更多的细节,例如错误处理、二进制文件操作等。掌握这些函数能让你更加灵活和高效地处理文件读写任务。如有错误,希望指出!
点个关注,防止迷路,欢迎大家共同学习交流 !
标签:文件,专题,读取,stream,写入,C语言,FILE,指针,函数 From: https://blog.csdn.net/2401_89278589/article/details/144176585