本文主要介绍了标准IO下一些常用的函数,方便以后进行查阅。如果有表述错误或者概念不清晰的地方欢迎大家提出批评和建议
目录
2. int fputc(int c, FILE *stream);
1.char *fgets(char *s, int size, FILE *stream);
2.int fputs(const char *s, FILE *stream);
1.size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
2.size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
1.int fseek(FILE *stream, long offset, int whence);
文件的打开与关闭
1.文件的打开
FILE *fopen(const char *pathname, const char *mode);
参数1:要打开文件的路径
参数2:打开的方式(如下)
r或rb:以只读方式打开文件,且文件必须存在
r+或r+b:以可读可写的方式打开文件,且文件必须存在
w或wb:以只写的方式打开文件,若文件不存在,则新建该文件。若文件存在,则会清空文件中的内容
w+或w+b:以可读可写的方式打开文件,若文件不存在,则新建该文件。若文件存在,则会清空文件中的内容
a或ab:以只写的方式打开文件,若文件不存在,则新建该文件。若文件存在,写入的数据会被加到文件的末尾,即文件原先的内容会被保存。
a+或a+b:以可读可写的方式打开文件,若文件不存在,则新建该文件。若文件存在,写入的数据会被加到文件的末尾,即文件原先的内容会被保存。
注:在每个选项中加入b来告诉函数库打开的文件为二进制文件,而非纯文本文件。(Linux系统会自动忽略该符号)
返回值:成功返回打开的文件流指针,失败返回NULL。
2.文件的关闭
int fclose(FILE *stream);
参数:打开的文件流指针。
返回值:成功返回0,失败返回EOF(-1)。
按字符读写文件
1. int fgetc(FILE *stream);
功能:从指定的流中读取一个字符(节)
参数:打开的文件流指针
返回值:成功返回读取的字符(ASICII码值),失败返回EOF(-1)
2. int fputc(int c, FILE *stream);
功能:将字符(节)输出到指定的流中
参数1:要输出的字符(节)
参数2:打开的文件流指针
返回值:成功返回写入的字符(节),失败返回EOF(-1)
3.int feof(FILE *stream);
功能:判断文件是否到达文件末尾(文件和二进制文件均可判断)
参数:打开的文件流指针
返回值:为0表示没有到达文件末尾,到达文件末尾返回非0值
按行读写文件
1.char *fgets(char *s, int size, FILE *stream);
功能:从指定的流中读取一行字符
参数1:存放读到的内容的首地址
参数2:读的大小
参数3:打开的文件流指针
返回值:成功返回读到的字符串的首地址,失败或读到文件末尾返回NULL
注:fgets相较于gets来说更安全,且会将换行符也读入,所以一般推荐大家使用fgets
2.int fputs(const char *s, FILE *stream);
功能:向指定的流中输出一行字符
参数1:要输出的内容的首地址
参数2:打开的文件流指针
返回值:成功返回非负数。失败返回EOF(-1)
注:puts相较于fputs自带换行
按块(指定大小)读写文件
1.size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:从指定的流中按块读取内容
参数1:存放读到的内容的首地址
参数2:一个块的大小
参数3:块的个数
参数4:打开的文件流指针
返回值:成功返回读到的块数,失败返回-1
注:假设文件有50个字节,每个块的大小为20,则返回值为2
因此传值的时候,size一般设置为1,nmemb设置为读的大小,返回值就是实际读到的字节数了
2.size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
功能:向指定的流中按块输出内容
参数1:要输出的内容的首地址
参数2:一个块的大小
参数3:块的个数
参数4:打开的文件流指针
返回值:成功返回写入的块数,失败返回-1
流的定位
1.int fseek(FILE *stream, long offset, int whence);
函数功能:对流的光标进行移动
参数1:打开的文件流指针
参数2:光标的偏移量
参数3:基准值(如下)
SEEK_SET:代表文件的起始位置
SEEK_END:代表文件的结束位置
SEEK_CUR:代表文件当前读写位置
eg:fseek(fr,0,SEEK_SET);代表跳转到文件开头
fseek(fr,-10,SEEK_CUR);代表从当前位置向前偏移10个字节
fseek(fr,0,SEEK_END);代表跳转到文件的末尾
返回值:成功返回0,失败返回-1
2.long ftell(FILE *stream);
函数功能:获得光标当前在文件的位置
参数:打开的文件流指针
返回值:成功返回光标当前的位置,失败返回-1