《C语言fread函数和fwrite函数的用法及其实例》由会员分享,可在线阅读,更多相关《C语言fread函数和fwrite函数的用法及其实例(4页珍藏版)》请在金锄头文库上搜索。
1、C语言fread函数和fwrite函数的用法及其实例C语言fpintf、fscanf函数与printfscanf函数作用相仿,都是格式化读写函数。只有一点不同:fprintf函数和fscanf函数的读写对象不是终端而是磁盘文件,一般调用方式为fprlntf(文件指针,格式化化字符串,输出列表);fscanf(文件指针,格式化字符串,输入表列);例如:fprintf(fp,n%dz%6.2nzizt);它的作用是将整形变量i和实型变量t的值按%d和%6.2f的格式输出到fp指向的文件上。用fprintf和fscanf函数对磁盘文件进行读写,使用很方便,易于理解,但在输入时要将ASCII码转换为二
2、进制形式,在输出时又要将二进制形式转换成字符,花费的时间比较多。因此.在内存与磁盘文件频繁交换的情况下最好用fread和fwrite函数。putw和getw函数用來対磁盘文件读写一个字。如:putw(10,fp):作用是将整数10输出到fp所指的向的文件。这两函数的定义如F:putw函数:intputw(inti,FILE*fp)char*s;intcount;s=(char*)&i;for(count=0;countsizeof(int);count+)putc(scount,fp);return(i);intgetw(FILE*fp)char*s;inti,count;s=(char*)&
3、i;/是s指向i的起始地址for(count=0;countsizeof(int);count+)scount=getc(fp);return(i);voidgetfloat(floatnum,FILE*fp)char*s;intcount;s=(char*)#for(count=0;count4;count+)putc(scountzfp);C语言中,用getc和putc函数可以对读写文件中的一个字符。但常常要求一次读入一组数据,ANSIC标准提出设置两个函数(fread和fwrite),用来读写一个数据块,它的一般调用形式为fread(buffer,size,count,fp);f
4、write(buffer,size,count,fp);其中:buffer:是一个指针。对fread來说,它是读入数据的存放地址。对fwrite來说,是耍输出数据的地址(是指起始地址)。size:是要读写的字节数。count:是要进行读写多少个size字节的数据项。fp:文件指针。如果文件二进制形式打开,用fread和fwrite函数就可以读写任何类型的信息。下面是一个完整的例子从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去,接着把它们输出到终端。#include#include#defineSIZE4structstudent_typecharname20;intnum;inta
5、ge;charaddr15;studSIZE;voidsave()FILE*fp;inti;if(fp=fopen(nD:stu_listnwbn)=NULL)printf(ncannotopenfilenlf);exit(1);for(i=0;iSIZE;i+)if(fwrite(&studi,sizeof(structstudent_type),lzfp)!=1)printf(,ffilewriteerror.n,f);fclose(fp);voidmain()printf(sizeof(structstud)=%dn,fzsizeof(student_type);printf(nPlea
6、seinputthe4studentinformation,includingname,num,age,addressnn);inti;for(i=0;iSIZE;i+)scanf(H%s%d%d%slfzstudiname,&studi.num,&studi.age,studi.addr);save();printf(lfnTheinformationofthe4studentsis:nn);FILE*fp;fp=fopen(nD:stu_list.txt11znrb,f);for(i=0;iSIZE;i+)fread(&studi,sizeof(structstudent_type),lffp);printf(lf%-10s%4d%4d%-15snHstudiname,studinum,studi.age,studiaddr);fclose(fp);