fopen、fclose等函数的总结

文件的打开和关闭

当使用文件时,打开和关闭文件是一套操作,谁也不能忘记

//打开文件
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)。
如果大小或计数为零,则函数返回零,并且错误指示器保持不变。

如有错漏之处,敬请指正!

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值