目录
一、为什么使用文件
前面我们使用通讯录记录联系人的时候,在程序结束后这些联系人都会被销毁,在下一次启动程序的时候,这些联系人又需要重新输入,为了防止这种情况,我们引入了文件操作,在程序结束后将通讯录中的内容保存在文件中,在下一次启动程序的时候在文件中读取内容,这样就能实现数据的持久化。
二、什么是文件
在程序设计中一般分为:程序文件和数据文件。
1. 程序文件
大致包括源程序文件(.c)
、目标文件(.obj)
、可执行程序(.exe)
等。
2. 数据文件
程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
三、文件的打开和关闭
1. 文件指针
FILE* pf;
定义 pf
是一个指向 FILE
类型数据的指针变量。可以使 pf
指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联。
2. 文件的打开和关闭
文件的打开
FILE * fopen ( const char * filename, const char * mode );
文件的关闭
int fclose ( FILE * stream );
3. 文件的打开方式
文件使用方式 | ------------------------------含义------------------------------ | 如果指定文件不存在 |
---|---|---|
“r”(只读) | 以只读方式打开一个文件 | 错误 |
“w”(只写) | 以只写方式打开一个文件 | 建立一个新文件 |
“a”(追加) | 打开一个文件追加 | 建立一个新文件 |
“rb”(只读) | 以只读方式打开一个二进制文件 | 错误 |
“rw”(只写) | 以只写方式打开一个二进制文件 | 建立一个新文件 |
“ra”(追加) | 打开一个二进制文件追加 | 建立一个新文件 |
“r+”(只读) | 以读写方式打开一个文件 | 错误 |
“w+”(只写) | 以读写方式建立一个文件 | 建立一个新文件 |
“a+”(追加) | 以读写方式打开一个文件追加 | 建立一个新文件 |
“rb”(只读) | 以读写方式打开一个二进制文件 | 错误 |
“wb”(只写) | 以读写方式建立一个二进制文件 | 建立一个新文件 |
“ab”(追加) | 以读写方式打开一个二进制文件追加 | 错误 |
四、文件的顺序读写
1. scanf函数
int scanf ( const char * format, ... );
scanf()函数
针对标准输入流(stdin)的格式化的输入函数
2. printf函数
int printf ( const char * format, ... );
printf()函数
针对标准输出流(stdout)的格式化的输出函数
3. fscanf函数
int fscanf ( FILE * stream, const char * format, ... );
fscanf()
函数针对所有输入流(文件流/stdin)的格式化输入函数
4. fprintf函数
int fprintf ( FILE * stream, const char * format, ... );
fprintf()函数
针对所有输出流(文件流/stdout)的格式化输出函数
5. sscanf函数
int sscanf ( const char * s, const char * format, ...);
sscanf()
函数把字符串转换成格式化的数据
6. sprintf函数
int sprintf ( char * str, const char * format, ... );
sprintf()
函数把格式化的数据转换成字符串
五、文件的随机读写
1. fseek函数
int fseek ( FILE * stream, long int offset, int origin );
fseek()函数
用于在打开的文件中移动读/写位置指针的位置。它可以将指针设置到文件的任何位置,以便读取或写入文件的不同部分。具体来说,fseek()函数
接受三个参数:文件指针、偏移量和起始点。通过指定这些参数,可以定位到文件中的任何位置。
常量 | 位置 |
---|---|
SEEK_SET | 文件开头 |
SEEK_CUR | 文件指针的当前位置 |
SEEK_END | 文件结尾 |
2. ftell函数
long int ftell ( FILE * stream );
ftell()函数
用于返回当前文件指针相对于文件起始处的偏移量,即当前位置距离文件开头的字节数。
3. rewind函数
void rewind ( FILE * stream );
rewind()函数
用于将文件指针重新定位到文件的开头。这意味着任何后续的读取或写入操作将从文件的开始处开始。
六、文件读取结束的判断
feof函数
注意:
feof()函数
是用来判断读取文件是否正常结束,而不是是否结束。
所以feof()函数
应该在文件结束后使用,而不是在读取过程中使用。
- 文本文件读取是否结束,判断返回值是否为
EOF( fgetc)
或者NULL( fgets)
例如:
fgetc()函数
判断是否为EOF
.
fgets()函数
判断返回值是否为NULL
. - 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
例如:
fread()函数
判断返回值是否小于实际要读的个数。
结尾
如果有什么建议和疑问,或是有什么错误,希望大家能够提一下。
希望大家以后也能和我一起进步!!
如果这篇文章对你有用的话,希望能给我一个小小的赞!