网站建站建设工作总结,网站建设课程感想,wordpress主题图片不居中,给学校做网站一#xff1a;文件的顺序读写
1#xff1a;顺序读写函数
函数名 功能 适⽤于
fgetc 字符输⼊函数 所有输⼊流
fputc 字符输出函数 所有输出流
fgets ⽂本⾏输⼊函数 所有输⼊流
fputs ⽂本⾏输出函数 所有输出流
fscanf 格式化…
一文件的顺序读写
1顺序读写函数
函数名 功能 适⽤于
fgetc 字符输⼊函数 所有输⼊流
fputc 字符输出函数 所有输出流
fgets ⽂本⾏输⼊函数 所有输⼊流
fputs ⽂本⾏输出函数 所有输出流
fscanf 格式化输⼊函数 所有输⼊流
fprintf 格式化输出函数 所有输出流1.1》fgetc
fgetc
int fgetc ( FILE * stream );作用;从流中读取字符即从stream中做指定的文件中取得一个字符且取完一个字符后stream会自动向下移动一个字节。
返回值返回所得到的字符如果读入失败返回EOF。
1.2》fputc
fputc
int fputc ( int character, FILE * stream );
作用将单个字符写入文件将一个字符输出到流。
返回值如果成功就写入那个字符如果失败EOF.
1.3》fgets
fgets
char * fgets ( char * str, int num, FILE * stream )这里的char*str表示指向复制读取的字符串的char数组的指针。用于存储读取到的字符串。num表示要复制str中的最大字符串包括终止空字符。表示最大读取的字符数。最后一个则是标识输入流的FILE对象的指针。指定要读取的文件流。
fgets函数会将读取的字符串储存到第一个参数指定的字符数组中并返回该字符数组的地址。如果读取成功则会返回字符数组的地址如果失败例如遇到文件结束符或者发生错误则返回NULL。
1.4》fputs
fputs
int fputs ( const char * str, FILE * stream );
作用向指定的文件写入字符串
str:字符串
stream:文件指针成功返回非负值失败返回EOF。
1.5》fscanf
int fscanf ( FILE * stream, const char * format, ... );
作用将FILE文件流中的数据读写出来。当遇到空格和换行时结束。
1.6》fprintf
int fprintf ( FILE * stream, const char * format, ... );
作用将格式化的数据输入到一个流中。
二文件的随机读取
1fseek
根据文件指针的位置和偏移量来定位文件指针。
int fseek ( FILE * stream, long int offset, int origin );
第一个参数为流第二个是偏移量第三个是文件指针定位的位置。 SEEK_SET以文件开头为中心
SEEK_CUR是文件指针的当前位置为中心 SEEK_END文件结尾为中心。
有了fseek函数可以随心所欲的让文件指针指向想要的位置以便获得想要的文件内容。
2ftell
返回文件指针相对于起始位置的偏移量.
long int ftell ( FILE * stream );
这个比较简单就不再详细介绍了。
3rewind 让文件指针的位置回到文件的起始位置
void rewind ( FILE * stream );
同上。
三文件读取结束的判定
feof是我们的主角。下面我们将详细介绍关于feof的知识。
首先牢记在文件读取过程中不能用feof函数的返回值直接来判断文件的是否结束。
feof 的作用是当文件读取结束的时候判断是读取结束的原因是否是遇到文件尾结束。
其次判断文本文件读取是否结束判断返回值是否为 EOF fgetc 或者 NULL fgets 例如 • fgetc 判断是否为 EOF . • fgets 判断返回值是否为 NULL .
二进制文件的读取结束判断判断返回值是否小于实际要读的个数。
四文件缓冲区
ANSIC 标准采用“缓冲文件系统”处理的数据文件的所谓缓冲文件系统是指系统自动地在内存中为 程序中每⼀个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓 冲区装满缓冲区后才⼀起送到磁盘上。如果从磁盘向计算机读入数据则从磁盘文件中读取数据输入到内存缓冲区充满缓冲区然后再从缓冲区逐个地将数据送到程序数据区程序变量等。缓冲区的大小根据C编译系统决定的。 下面我们可以看一个例子来进一步了解。
#include stdio.h
#include windows.h
//VS2019 WIN11环境测试
int main()
{FILE*pf fopen(test.txt, w);fputs(abcdef, pf);//先将代码放在输出缓冲区printf(睡眠10秒-已经写数据了打开test.txt⽂件发现⽂件没有内容\n);Sleep(10000);printf(刷新缓冲区\n);fflush(pf);//刷新缓冲区时才将输出缓冲区的数据写到⽂件磁盘//注fflush 在⾼版本的VS上不能使⽤了printf(再睡眠10秒-此时再次打开test.txt⽂件⽂件有内容了\n);Sleep(10000);fclose(pf);//注fclose在关闭⽂件的时候也会刷新缓冲区pf NULL;return 0;
}
这里可以得出⼀个结论 因为有缓冲区的存在C语言在操作文件的时候需要做刷新缓冲区或者在文件操作结束的时候关闭文件。如果不做可能导致读写文件时有问题 。
相关文章: