之前有讲过 文件的打开和关闭。这里我们讲一下文件的读写函数。和一些实用的小技巧。让自己写的代码更加健壮♂。手动滑稽。
收!
在C语言中有提供多种的函数,都具有文件读写的功能。如下:
字符读写:fgetc ,fputc
字符串读写:fgets ,fputs
格式化读写:fscanf , fprintf
数据块读写:fread ,fwrite
字符读写
它们都是以字符作为基础单位进行读写的。这个需要注意。
fgetc原型:
int fgetc (FILE *filepointer);
功能是从文件指针做指向的文件中读取一个字符的数据,同时把读写指针往前移动一个字节。 (这里的读写指针,大家可以理解为光标也就是我们平常打字的时候那个一闪一闪的竖杠。)
fputc原型:
int fputc (int c, FILE *filepointer);
功能是把c表示的字符数据输出到文件指针所指的文件中去。同时把读写指针往前移动一个字节。
字符串读写
fgets原型:
char *fgets (char *s,int n, FILE *filepointer);
功能是从文件指针所指向的文件中,读取长度n-1个字符的字符串,并且中字符串最后加上‘\0’,然后存放入s中,同时把读取指针往前移动n-1, 假如函数中读取过程中遇到换行符,那么函数返回。
fputs原型:
int fputs (char *s,FILE *filepointer);
功能是把s所表示的字符串写到文件指针所指向的文件中,同时把读取指针向前移动字符串长度个字节。注意函数是不会吧字符串末尾的‘\0’写入进去的。
格式化读写
这个就不给你们看原型了,
直接看下面例子:
fprintf(fp,"%d,%f",i,f);fscanf(fp,"%d,%f",&i,&f);
这里fp是文件指针。
数据块读写
fread原型:
unsingned fread (vpid *ptr,unsigned size,unsigned n,FILE *filepointer);
功能是从文件指针所指文件中读取n次数据,每次数据读取大小是size个字节,放到ptr里面,同时读取坐标向前size×n个字节。
fwrite原型:
unsigned fwrite (void *ptr,unsigned size,unsigned n,FILE *filepointer);
功能是把ptr里面的数据块写入到文件指针中去。同时读取坐标向前size×n个字节。
这里大家需要注意一点 格式化读写和字符串读写对二进制文件的操作是无意义的。
在读取指针在文件最后的时候很多函数会在读取时返回EOP。
EOF 本来表示文件末尾,意味着读取结束,但是很多函数在读取出错时也返回 EOF,那么当返回EOF时,到底是文件读取完毕了还是读取出错了?我们可以借助 中的两个函数来判断,分别是 feof() 和 ferror()。
feof() 函数用来判断文件内部指针是否指向了文件末尾,它的原型是:
int feof ( FILE * fp );
当指向文件末尾时返回非零值,否则返回零值。
ferror() 函数用来判断文件操作是否出错,它的原型是:
int ferror ( FILE *fp );
出错时返回非零值,否则返回零值。
好了文章到此结束,大家如果觉得我的文章还可以的可以,关注,转发,收藏,评论,拜!