1.函数功能
用来读写一个数据块。
2.一般调用形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
3.说明
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数;
(3)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。
注意:1 完成次写操(fwrite())作后必须关闭流(fclose());
2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;
3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。
4.例子
4.1 对bmp图像进行读写
假设有一图像 数据,图像信息头Bmpfile。文件头Bmpinfo。图像数据数组Bmpdata[ ] 都已知道情况下:
char * fname="file.bmp";
FILE * fp=NULL;
fp=fopen(fname,"wb");
fwrite(&BmpFile,14,1,fp); 将前十四字节 文件头信息写入目的地址
fwrite(&BmpInfo,40,1,fp);将40字节信息头信息写入目的地址
fwrite(Bmpdata,30*20*3,1,fp); 将信息数据写入目的地址
fclose(fp); 保存文件 图像保存完毕
5、fseek()
int fseek(FILE *stream, long offset, int fromwhere);fseek 用于二进制方式打开的文件,移动文件读写指针位置.
fseek(in,-1L,1); -- 文件流in, 零点为当前指针位置,SEEK_CUR 就是 1, -1L -- 文件指针回退1个字节int fseek( FILE *stream, long offset, int origin );
第一个参数stream为文件指针
第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
简言之:
fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
fseek(fp,100L,2);把fp指针退回到离文件结尾100字节处。
1.函数功能 2.一般调用形式 3.说明 4.例: 1.fread(&id,1,10,f)就是把f里面的值读到id里面,每次读1个字节,一共读10次,或者把id里面的值都读完,不到10次也会停止。 2.fwrite(&id,1,10,f)就是把id里面的值读到f里面,每次读1个字节,一共读10次或是fread(&id,10,1,f)就是把id里面的值读到里面,每次读10个字节,一共读1次。 函数名: fseek 函数功能:把与fp有关的文件位置指针放到一个指定位置。 其中,“位移量”是long型数据,它表示位置指针相对于“起始点”移动的字节数。如果位移量是一个正数,表示从“起始点”开始往文件尾方向移动;如果位移量是一个负数,则表示从“起始点”开始往文件头方向移动。 “起始点”不能任意设定,它只能是在stdio.h中定义的三个符号常量之一: 例如: fseek(fp,50L,0);或fseek(fp,50L,SEEK_SET); 其作用是将位置指针移到离文件头50个字节处。 putpixel函数: putpixel(int x,int y,int color) x,y为坐标,color为颜色值.该函数在(x,y)点设定象素的颜色.由于硬件的不同,也许提供的函数不同,用户可把此函数作为参考,必要时用硬件提供的函数取而代之. 原型:extern void putpixel(int x, int y, int mode); 用法:#include <system.h> 功能:在屏幕的指定位置上画点 说明:(x,y)为屏幕上点的坐标,mode值含义如下: mode=0:清除(x,y)处的点 1:在(x,y)处画点 2:将(x,y)处的点的状态取反 举例: // pixel.c #include <system.h> main() { int i,j; clrscr(); printf("V"); gotoxy(10,10); // Hide cursor for(i=0;i<8;i++) for(j=0;j<16;j++) { if(getpixel(i,j)) putpixel(10+i,10+j,1); else putpixel(10+i,10+j,0); } getchar(); return 0; } |
#include"stdio.h" fseek(文件类型指针fp,位移量,起始点); |