[Linux]标准库IO接口,文件操作:fopen,fwrite,fread,fclose

标准库IO接口

fopen()

FILE * fopen ( const char * path, const char * mode );

功能:打开在参数path中指定名称的文件,并将其与一个流相关联,该流可以在以后的操作中由返回的文件流指针标识。
path:带路径的文件名(如果不带路径,则会在当前目录下创建该文件)
mode:文件打开方式
返回值;成功,返回操作句柄—文件流指针;失败,返回NULL

文件打开方式

控制读写权限的字符串(必须指明)
打开方式 说明
“r” 以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。
“w” 以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
“a” 以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
“r+” 以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。
“w+” 以“写入/更新”方式打开文件,相当于"w"和"r"叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
“a+” 以“追加/更新”方式打开文件,相当于"a"和"r"叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
控制读写方式的字符串(可以不写)
“t” 文本文件。如果不写,默认为"t"。
“b” 二进制文件。

整体来说,文件打开方式由 r、w、a、t、b、+ 六个字符拼成,各字符的含义是:
r(read):读
w(write):写
a(append):追加
t(text):文本文件
b(binary):二进制文件
+:读和写

fwrite()

size_t fwrite ( const void * ptr, size_t size, size_t nmemb, FILE * stream );

功能:从ptr指向的内存块向流中的当前位置写入nmemb元素数组,每个元素的大小为size个字节。(实际写入的大小为size*nmemb
ptr:要写入的数据,
size:块大小;nmemb:块个数
返回值:成功,返回完整写入文件的块个数;失败,返回0

fread()

size_t fread ( void * ptr, size_t size, size_t nmemb, FILE * stream );

功能:从流中读取count元素的数组,每个元素的大小为size个字节,并将它们存储在ptr指定的内存块中。
ptr:传入存放读取到的数据的缓冲区首地址
size:块大小;nmemb:块个数 —size*nmemb就是要读取的总长度
stream:fopen返回的操作句柄—文件流指针
返回值:

成功,返回完整读取到的块个数;
失败,返回0;
文件读取到末尾也返回0;(可以通过int feof(FILE* stream)判断是否读取到文件末尾)
建议:块大小设置为1,块个数设置为长度

fseek()

int fseek ( FILE * stream, long offset, int whence);

功能:跳转文件的读写位置
offset:偏移量
whence:偏移的相对起始位置

SEEK_SET:文件的起始位置;
SEEK_CUR:当前位置;
SEEK_END:文件的末尾位置。

flclose()

int fclose ( FILE * stream );

功能:关闭与流关联的文件并解除其关联。

猜你喜欢

转载自blog.csdn.net/weixin_43962381/article/details/115297257
今日推荐