以下是常见的文件读写函数:
- 从文件读取一个字符:fgetc
int fgetc ( FILE * stream );
- stream是输入流指针,返回值是读取的字符;
- 从外存输入内存一个字符,每输入一个字符,文件输入流指针向后偏移一个字符,如果位置指示符在文件末尾,该函数返回EOF并设置stream的EOF指示符(feof);如果发生其他读取错误,该函数也返回EOF,但设置其错误指示器(ferror)。
- 向文件写入一个字符:fputc
int fputc ( int character, FILE * stream );
- stream是输出流指针,charactershi 是源头字符,返回值是输出的字符;
- 从内存输出外存一个字符,每输出一个字符,文件输出流指针向后偏移一个字符;如果输出错误,则返回EOF,并设置错误提示器(terror);
- 从文件读取一行字符串:fgets
char * fgets ( char * str, int num, FILE * stream );
- stream是输入流指针,str是从外存获取的字符串并用于存储的目标地址,读取num-1 个字符,或者遇到换行符或者文件末尾提前结束,如果读取成功,返回str地址(即使 遇到换行符或文件末尾提前结束),如果一个字符都没有读取或者读取错误,则返回 NULL,目标指针str内容不改变,如果读取提前结束,则设置eof(feof),如果读取错 误,则设置错误提示器(ferror);
- 从外存输入内存一行字符串,当获取的一行字符串长度小于num-1个时候,换行符也会 被读取,并且在字符串末尾自动添加一个终止NULL;
- 向文件写入一行字符串:fputs
int fputs ( const char * str, FILE * stream );
- stream是输出字符流,str是源头字符串指针,如果输出成功,则返回一个非负数,如 果输出失败发生错误,则返回EOF并设置错误提示器(feof);
- 从内存输出外存一行字符串,
- 从文件中格式化读取一组数据:fscanf
int fscanf ( FILE * stream, const char * format, ... );
- stream是输入流指针,format…是个格式化的数据;如果成功,该函数返回参数列表中成功填充的项数。这个计数可以与预期的项数相同, 也可以由于匹配失败、读取错误或到达文件结束符而更少(甚至为零)。如果发生读取错 误或在读取时到达文件末尾,则设置适当的指示符(feof或ferror)。如果在成功读取任 何数据之前发生了其中一个,则返回EOF。如果在解释宽字符时发生编码错误,该函 数将errno设置为EILSEQ。
- 输入到内存中并格式化存储与目标变量,
- 向文件中格式化输出一组数据:fprintf
int fprintf ( FILE * stream, const char * format, ... );
- stream是输出流指针,把格式化的数据输出到外存中;
- 如果成功,则返回输出的字符总数。如果发生输出错误,则设置错误指示器(ferror)并返 回一个负数。如果在输出宽字符时发生多字节字符编码错误,则将errno设置为EILSEQ 并返回一个负数。
- 从文件读取二进制数据:fread
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
- stream是输入流指针,size是读取的每个数据的字节数,count是总共读取数据数量, ptr是读取到的数据在内存中的存储地址;返回成功读取的元素总数。如果这个数字与 count参数不同,要么发生了读取错误,要么在读取时到达了文件末尾。在这两种情况 下,都设置了适当的指示器,可以分别用ferror和feof检查。如果size或count有一 个为零,该函数返回零,并且流的状态和ptr指向的内容都保持不变。Size_t是无符号 整数类型。
- 从外存中读取指定数量的二进制数据;
- 向文件输出二进制数据:fprintf
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
- stream是输出流指针,size是输出的每个数据的字节数,count是总共输出的数据数 量,ptr是需要向外存输出的数据在内存中的存储地址;
- 返回成功写入的元素总数。如果这个数字与count参数不同,则会发生写入错误,导致 函数无法完成。在这种情况下,将为流设置错误指示器(ferror)。如果size或count为 零,则函数返回零,错误指示符保持不变。Size_t是无符号整数类型。
- 向外存中输出指定数量的二进制数据;