文章目录
文件的打开和关闭
当使用文件时,打开和关闭文件是一套操作,谁也不能忘记
//打开文件
FILE * pf = fopen ( "filename", "mode" );//pf、filename、mode看自己需要什么就写什么
if (pf==NULL)
{
perror("fopen");
return 1;//返不返回视情况而定
}
//读取文件
//关闭文件
fclose ( pf );
pf=NULL;
这里涉及到了fopen(),fclose()函数
fopen
FILE* fopen ( const char* filename, const char * mode );
-
作用
- 打开文件 参数
- mode
mode | 含义 —— 如果指定文件不存在 |
---|---|
“r”(只读 ) | 为了输入数据,打开一个已经存在的文本文件 —— 出错 |
“w”(只写) | 为了输出数据,打开一个文本文件 —— 建立一个新的文件 |
“a”(追加) | 向文本文件尾添加数据 —— 建立一个新的文件 |
-
返回值
- 如果文件被成功打开,函数将返回一个指向file对象的指针,该对象可用于识别未来操作中的流
- 失败则将返回一个空指针
fclose
int fclose ( FILE * stream );
-
作用
- 关闭文件 参数
- stream 指向将要被关闭的文件 返回值
- 成功关闭则将返回0
- 失败则将返回EOF (-1)
文件的顺序读写
字符输入输出函数
fgetc ——字符输入函数 ,适用于所有输入流
int fgetc ( FILE * stream );
-
作用
- 从流中获取字符 参数
- stream 指向标识输入流的FILE对象的指针。 返回值
- 成功后,将返回读取的字符(提升为int值)。
- 失败则返回EOF(-1)
fputc ——字符输出函数 ,适用于所有输出流
int fputc ( int character, FILE * stream );
-
作用
- 将字符写入流 参数
- character 要写入的字符的int提升。写入时,该值会在内部转换为无符号字符。
- stream 指向标识输出流的FILE对象的指针。 返回值
- 成功后,所写的字符将被返回。
- 如果发生写入错误,则返回EOF(-1)并设置错误指示器(ferror)。
文本行输入输出函数
fgets ——文本行输入函数 ,适用于所有输入流
char * fgets ( char * str, int num, FILE * stream );
-
作用
- 从流中获取字符串 参数
- str 指向将读取的字符串复制到其中的字符数组的指针。
- num 要复制到str中的最大字符数(包括终止的null字符)。
- stream 指向标识输入流的FILE对象的指针。stdin可以用作从标准输入中读取的参数。 返回值
- 成功后,函数返回str。
- 如果在尝试读取字符时遇到文件结尾,则设置eof指示符(feof)。
- 如果在读取任何字符之前发生这种情况,则返回的指针为空指针(str的内容保持不变)。
- 如果发生读取错误,则会设置错误指示器(ferror),并返回一个空指针(但str指向的内容可能已更改)。
fputs ——文本行输出函数 ,适用于所有输出流
int fputs ( const char * str, FILE * stream );
-
作用
- 将字符串写入流 参数
- str 具有要写入流的内容的C字符串。
- stream 指向标识输出流的FILE对象的指针。 返回值
- 成功后,将返回一个非负值。
- 出现错误时,该函数返回EOF(-1)并设置错误指示器(ferror)。
格式化输入输出函数
fscanf ——格式化输入函数 ,适用于所有输入流
int fscanf ( FILE * stream, const char * format, … );
-
作用
- 从流中读取格式化数据 参数
- stream 指向FILE对象的指针,该对象标识要从中读取数据的输入流。
- format 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
注意:fscanf与scanf的参数相比只增加了stream,其余的参数可以类比scanf的使用。
-
返回值
- 成功后,该函数返回成功匹配和赋值的个数。
- 如果到达文件末尾或发生读错误,则返回 EOF(-1)。
fprintf ——格式化输出函数 ,适用于所有输出流
int fprintf ( FILE * stream, const char * format, … );
-
作用
- 将格式化数据写入流 参数
- stream 指向标识输出流的FILE对象的指针。
- format 这是 C 字符串,包含了要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。
注意:fprintf与printf的参数相比只增加了stream,其余的参数可以类比printf的使用。
-
返回值
- 如果成功,则返回写入的字符总数
- 否则返回一个负数。
二进制输入输出
注意:以下出现的size_t是一个无符号整数类型。
fread ——二进制输入 ,适用于文件
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
-
作用
- 从流中读取数据块 参数
- ptr 指向大小至少为(size*count)字节的内存块的指针,该内存块已转换为void *。
- size 要读取的每个元素的大小(以字节为单位)。
- count 元素的数量,每个元素的大小为字节。
- stream 指向指定输入流的FILE对象的指针。 返回值
- 返回成功读取的元素总数。
- 如果此数字与count参数不同,则表示发生读取错误,或者读取时已到达文件末尾。在这两种情况下,都设置了适当的指示器,可以分别用ferror和feof进行检查。
- 如果大小或计数为零,则函数返回零,并且ptr所指向的流状态和内容保持不变。
fwrite ——二进制输出 ,适用于文件
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
-
作用
- 将数据块写入流 参数
- ptr 指向要写入的元素数组的指针,转换为常量void*。
- size 要写入的每个元素的大小(以字节为单位)。
- count 元素的数量,每个元素的大小为字节。
- stream 指向指定输出流的FILE对象的指针。 返回值
- 返回成功写入的元素总数。
- 如果此数字与计数参数不同,则写入错误会阻止函数完成。在这种情况下,将为流设置错误指示器(ferror)。
- 如果大小或计数为零,则函数返回零,并且错误指示器保持不变。
如有错漏之处,敬请指正!