Linux—fopen,fwrite,fseek,fread,fputc,feof,fgetc 用法

1.fopen:(打开文件)

函数原型

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

函数形参介绍

返回值是一个FILE型的指针(文件指针)
**path:**文件名
mode: 权限(文件使用方式) 比如可读,可写,可读可写…

权限(总结)

r只读方式打开一个文本文件
rb 只读方式打开一个二进制文件
w 只写方式打开一个文本文件
wb 只写方式打开一个二进制文件
a 追加方式打开一个文本文件
ab 追加方式打开一个二进制文件
r+ 可读可写方式打开一个文本文件
rb+ 可读可写方式打开一个二进制文件
w+ 可读可写方式创建一个文本文件
wb+ 可读可写方式生成一个二进制文件
a+ 可读可写追加方式打开一个文本文件
ab+ 可读可写方式追加一个二进制文件

fwrite:(写入文件)

函数原型

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

函数形参介绍

成功写入则返回实际写入的数据个数 就是返回写入次数(nmemb的值)
注意:写完数据后要调用fclose()关闭流,不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针。

3.fseek:(移动光标)

函数原型

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

函数形参介绍

stream:文件指针
offset:偏移量(正数表示正向偏移,负数表示负向偏移)
whence:光标位置

SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾

成功,返回0,失败返回非0值,并设置error的值,可以用perror()函数输出错误。

4.fread 读文件

函数原型

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

函数参数介绍

**ptr:**指向要读取的数组中首个对象的指针
**size:**读取多大
**nmemb:**读取多少次
**stream:**文件指针
返回值 是读取了多少次的次数。

5.fclose 关闭文件

关闭文件直接 fclose(文件指针);

以下图是运用了上面的几个函数。在创建了一个文件名叫 file2 ,然后写入hello word 到文件里面 然后光标移到文件头 再进行读写 把内容读写到readBuf里面去。 然后关闭了文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.fputc:

将字符c写到文件指针fp所指向的文件的当前写指针的位置。
**原型:**int fputc (int c, FILE *fp)。
例子 我想在文件叫test 写入 hello word!
请添加图片描述

7.feof:

函数原型

int feof(FILE *stream);

函数形参介绍

stream:文件指针
检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值;文件未结束:返回0值)。

注意 feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。

8.fgetc:
从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。
原型 int fgetc(FILE *stream);。
getc()函数的功能是从文件指针指定的文件中读入一个字符,该字符的ASCII值作为函数的返回值,若返回值为EOF,说明文件结束,EOF是文件结束标志,值为-1。

下面是通过fgetc读取test文件的内容(hello word!),用feof判断是否到了文件结束地步。如果到了则退出读取。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48321071/article/details/125070874