Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

Linux大全评论1.5K views阅读模式

前面我分享了Linux文件系统调用的一些函数,是不带缓存的,一般是底层调用,今天来分享下上层的标准IO操作函数,也就是跨平台的,一般以f开头
1 fopen
函数原型 FILE * fopen(const char *path,cost char *mode)

作用:打开一个文件,返回指向该文件的指针

参数说明:第一个参数为欲打开文件的文件路径及文件名,第二个参数表示对文件的打开方式

注:mode有以下值:

r:只读方式打开,文件必须存在

r+:可读写,必须存在

rb+:打开二进制文件,可以读写

rt+:打开文本文件,可读写

w:只写,文件存在则文件长度清0,文件不存在则建立该文件

w+:可读写,文件存在则文件长度清0,文件不存在则建立该文件

a:附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,EOF符保留

a+:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留

wb:打开二进制文件,只写

wb+:打开或建立二进制文件,可读写

wt+:打开或建立文本文件,可读写

at+:打开文本文件,可读写,写的数据加在文本末尾

ab+:打开二进制文件,可读写,写的数据加在文件末尾

由mode字符可知,上述如r、w、a在其后都可以加一个b,表示以二进制形式打开文件

返回值:文件打开了,返回一个指向该打开文件的指针(FILE结构);文件打开失败,错误上存error code(错误代码)

2 fclose
函数原型:int fclose(FILE *stream)

功能:关闭一个文件流,使用fclose就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区

3 fread
函数原型:size_t fread(void* buff,size_t size,size_t count,FILE* stream)

作用:从文件中读入数据到指定的地址中

参数:第一个参数为接收数据的指针(buff),也即数据存储的地址

第二个参数为单个元素的大小,即由指针写入地址的数据大小,注意单位是字节

第三个参数为元素个数,即要读取的数据大小为size的元素个素

第四个参数为提供数据的文件指针,该指针指向文件内部数据

返回值:读取的总数据元素个数

4 fwrite
函数原型:size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream )

作用:写入数据到指定的文件流中

参数:第一个参数为接收数据的指针(buff),也即数据存储的地址

第二个参数为单个元素的大小,即由指针写入地址的数据大小,注意单位是字节

第三个参数为元素个数,即要读取的数据大小为size的元素个素

第四个参数为提供数据的文件指针,该指针指向文件内部数据

返回值:写入的总数据元素个数

例子,把file.in的文件读出来,写入到file.out
Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

5 fgetc
函数原型:int fgetc(FILE *stream)

作用:从一个流中读取一个字符

参数:一个FILE型的指针

返回值:getc 以 unsigned char 的方式读取文件流,扩张为一个整数,并返回。 意思就是, getc 从文件流中取一个字节(8位),并加上24个零,变成32位整型,成为一个小于256的整数, 然后返回

6 fputc
函数原型:int fputc(int ch, FILE *stream)

作用:往一个流中输入一个字符

参数:第一个参数ch虽然是整型,但fputc 将其写入文件流之前,,把整数的高24位去掉了

第二个参数是一个FILE型的指针

返回值:如果成功输入,fputc 返回 0,否则返回EOF(-1)

例子,把filegetc.in的文件读出来,写入到fileputc.out
Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

7 fgets
函数原型:char *fgets(char *s, int n, FILE *stream)

作用:从流中读取n-1个字符,末尾有一个结束标志’\0’

参数:第一个参数s是来接收字符串

第二个参数是字符个数

第三个参数是一个FILE型的指针

返回值:如果成功则返回s的指针,否则返回NULL

注意:这种读的方式,每次遇到换行就会结束,所以读的时候需要用while循环

8 fputs
函数原型:int fputs(const char * s, FILE *stream);

作用:从流中写入字符串

参数:第一个参数s是输入字符串

第二个参数是一个FILE型的指针

返回值:如果成功则回一个非负的值,否则,错误返回EOF

例子:把filegets.in的文件读出来,写入到fileputs.out
Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs

当然这个n可以调大一点,使其每次尽量读一整行

企鹅博客
  • 本文由 发表于 2019年10月2日 05:09:25
  • 转载请务必保留本文链接:https://www.qieseo.com/230974.html

发表评论