共同函数
fopen() ,fclose()都是通用的,还有fseek(),不过fseek在文本文件里尽量少用
功 能: 重定位流上的文件指针
用 法: int fseek(FILE *fp, long offset, int fromwhere);
描 述: 函数设置文件指针fp的位置。如果执行成功,fp将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变fp指向的位置。
fromwhere参数有三种,0是文件开头,1是文件当前位置,2是文件末尾。
“偏移量”是long型数据,它表示位置指针相对于“起始点”移动的字节数。 如果位移量是一个正数,表示从“起始点”开始往文件尾方向移动;如果是负数,则表示从“起始点”开始往文件头方向移动。
返回值: 成功,返回0,否则返回其他值。
例1:fseek(fp,0,2);文件指针fp定位到文件末尾,偏移0个字节 ;
例2:fseek(fp,2L,0);文件开头偏移2个字节,写入(会覆盖原来位置的数据)fp的内容;
下面是fseek()的用法示例:(输出bmp图片文件的长度)
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp1;
unsigned char *f;
long L;
fp1=fopen("d:\\6.bmp","rb");
fseek(fp1,0,2);
L=ftell(fp1);
f=(unsigned char*)malloc(L);
rewind(fp1);
fread(f,L,1,fp1);
printf("%ld\n",L);
fclose(fp1);
return 0;
}
读写函数
二进制文件
文件的读写函数分别是fread(),fwrite()
调用形式:
- fread(buffer,size,count,fp);
- fwrite(buffer,size,count,fp);
参数:
buffer:读入或输出数据的地址;
size:读写输入时,每组数据的大小;
cout:读写数据的次数;
fp:文件指针;
函数功能:一次读取一组数据,可以读取count次;
文本文件
读写函数分别是fgets(),fputs()☞字符串读写操作
或者是fgetc(),fputc()☞字符读写操作
调用形式:fgets(str,n,fp)
函数参数:
n为要求得到的字符串个数,但只从fp指向的文件输入n-1个字符,然后最后加一个‘\0’字符,因此共得到n个字符的字符串,把他们放在字符数组str中。n可选。如果在读完n-1个字符之前,遇到换行符或EOF,读取结束。
还有fscanf(),fprintf()
例:fscanf(fp,"%s%d%lf",a,&b,&c);
最后文末附上一个大佬的关于二进制文件和文本文件的区别详细博客地址,欢迎大家膜拜!!!(https://blog.youkuaiyun.com/colourful_sky/article/details/80334250)
本文介绍了二进制文件与文本文件的区别,重点讲解了文件操作函数fopen、fclose和fseek的使用。fseek用于重定位文件指针,其fromwhere参数可指定定位起点。读写函数中,二进制文件使用fread和fwrite,文本文件使用fgets、fputs、fgetc和fputc。文章还提及了fscanf和fprintf,并提供了一个深入解析二进制与文本文件区别的博客链接。
886

被折叠的 条评论
为什么被折叠?



