fopen函数:
FILE * fopen ( const char * filename, const char * mode );
文件使用方式 | 含义 | 如果指定文件不存在 |
"r"只读 | 为读而打开文本文件 | 出错 |
"w"(只写) | 为写而打开文本文件,从起始位置开始写,原有内容消失 | 创建一个新的文件 |
"a"(追加) | 向文本文件末尾添加数据 | 创建一个新的文件 |
"rb"(只读) | 为读而打开一个二进制文件 | 出错 |
"wb"(只写) | 为写而打开一个二进制文件 | 创建一个新的文件 |
"ab"(追加) | 向一个二进制文件末尾添加数据 | 出错 |
"r+"(读写) | 为了读和写,打开一个文本文件 | 出错 |
"w+"(读写) | 如果不存在,创建一个新的文本文件,存在则原有内容清空 | 创建一个新的文件 |
"a+"(读写) | 在文件末尾进行读写 | 创建一个新的文件 |
fclose函数:
int fclose ( FILE * stream );
任何一个c程序,只要运行起来就会默认打开三个流
FILE* stdin 标准输入流(键盘)
FILE* stdout 标准输出流(屏幕)
FILE* stderr 标准错误流(屏幕)
功能 | 函数名 | 适用于 |
字符输入函数 | fgetc | 所有输入流 |
字符输出函数 | fputc | 所有输出流 |
文本行输入函数 | fgets | 所有输入流 |
文本行输出函数 | fputs | 所有输出流 |
格式化输入函数 | fscanf | 所有输入流 |
格式化输出函数 | fprintf | 所有输出流 |
二进制输入 | fread | 文件 |
二进制输出 | fwrite | 文件 |
文件的随机读写:
feek:
int fseek ( FILE * stream, long int offset, int origin );
根据文件指针的位置和偏移量来定位文件指针
SEEK_SET | 文件起始位置 |
SEEK_CUR | 文件当前位置 |
SEEK_END | 文件末尾位置 |
ftell:
long int ftell ( FILE * stream );
返回文件指针相对于起始位置的偏移量
rewind:
void rewind ( FILE * stream );
让文件指针回到文件起始位置
文件读取结束的判定:
被错误使用的feof函数:
在文件读取过程中,不能用feof函数的返回值直接用来判断文件是否结束。而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。
正确方式
1.文本文件读取是否结束:
fgetc判断是否返回EOF
fgets判断是否返回NULL
2.二进制文件的读取结束判断
fread判断返回值是否小于实际读取的个数