fwrite函数的一般调用形式是(VC++中fwrite函数的用法是什么)
本文目录
- VC++中fwrite函数的用法是什么
- 有一个C语言的函数,帮我解释里面的几句话就可以了
- fscanf 与fgets有什么区别
- 成块读写函数fread和fwrite
- C语言下提供了哪些有关文件的操作
- C++ 关于 fwirte 和fread
VC++中fwrite函数的用法是什么
fwrite(将数据写至文件流)相关函数 fopen,fread,fseek,fscanf表头文件 #include《stdio.h》定义函数 size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);函数说明 fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。返回值 返回实际写入的nmemb数目。范例 #include《stdio.h》#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}#define nmemb 3struct test{char name;int size;}s[nmemb];main(){FILE * stream;set_s(0,”Linux!”);set_s(1,”FreeBSD!”);set_s(2,”Windows2000.”);stream=fopen(“/tmp/fwrite”,”w”);fwrite(s,sizeof(struct test),nmemb,stream);fclose(stream);}执行 参考fread()。
有一个C语言的函数,帮我解释里面的几句话就可以了
这里为什么要比字符串,这有什么作用吗,假如不加会有什么情况呢?这是防止文件名相同。fread(&temp,1,1,input); fwrite(&temp,1,1,output);数据块读写函数fread和fwrite C语言还提供了用于整块数据的读写函数。 可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp); 写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp); 其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。 size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。例如:fread(fa,4,5,fp); 其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。
fscanf 与fgets有什么区别
字符串读写函数fgets和fputs一、读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志’\0’。例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。[例10.4]从e10_1.c文件中读入一个含10个字符的字符串。#includemain(){FILE *fp;char str;if((fp=fopen(“e10_1.c“,“rt“))==NULL){printf(“Cannot open file strike any key exit!“);getch();exit(1);}fgets(str,11,fp);printf(“%s“,str);fclose(fp);} 本例定义了一个字符数组str共11个字节,在以读文本文件方式打开文件e101.c后,从中读出10个字符送入str数组,在数组最后一个单元内将加上’\0’,然后在屏幕上显示输出str数组。输出的十个字符正是例10.1程序的前十个字符。对fgets函数有两点说明:1. 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。2. fgets函数也有返回值,其返回值是字符数组的首地址。二、写字符串函数fputsfputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名, 或指针 变量,例如:fputs(“abcd“,fp);其意义是把字符串“abcd”写入fp所指的文件之中。[例10.5]在例10.2中建立的文件string中追加一个字符串。#includemain(){FILE *fp;char ch,st;if((fp=fopen(“string“,“at+“))==NULL){printf(“Cannot open file strike any key exit!“);getch();exit(1);}printf(“input a string:\n“);scanf(“%s“,st);fputs(st,fp);rewind(fp);ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}printf(“\n“);fclose(fp);} 本例要求在string文件末加写字符串,因此,在程序第6行以追加读写文本文件的方式打开文件string 。 然后输入字符串,并用fputs函数把该串写入文件string。在程序15行用rewind函数把文件内部位置指针移到文件首。再进入循环逐个显示当前文件中的全部内容。数据块读写函数fread和fwriteC语言还提供了用于整块数据的读写函数。 可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp); 写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp); 其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。 size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。例如:fread(fa,4,5,fp); 其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。[例10.6]从键盘输入两个学生数据,写入一个文件中, 再读出这两个学生的数据显示在屏幕上。#includestruct stu{char name;int num;int age;char addr;}boya,boyb,*pp,*qq;main(){FILE *fp;char ch;int i;pp=boya;qq=boyb;if((fp=fopen(“stu_list“,“wb+“))==NULL){printf(“Cannot open file strike any key exit!“);getch();exit(1);}printf(“\ninput data\n“);for(i=0;i《2;i++,pp++)scanf(“%s%d%d%s“,pp-》name,&pp-》num,&pp-》age,pp-》addr);pp=boya;fwrite(pp,sizeof(struct stu),2,fp);rewind(fp);fread(qq,sizeof(struct stu),2,fp);printf(“\n\nname\tnumber age addr\n“);for(i=0;i《2;i++,qq++)printf(“%s\t%5d%7d%s\n“,qq-》name,qq-》num,qq-》age,qq-》addr);fclose(fp);} 本例程序定义了一个结构stu,说明了两个结构数组boya和 boyb以及两个结构指针变量pp和qq。pp指向boya,qq指向boyb。程序第16行以读写方式打开二进制文件“stu_list”,输入二个学生数据之后,写入该文件中, 然后把文件内部位置指针移到文件首,读出两块学生数据后,在屏幕上显示。格式化读写函数fscanf和fprintffscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。 两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如:fscanf(fp,“%d%s“,&i,s);fprintf(fp,“%d%c“,j,ch); 用fscanf和fprintf函数也可以完成例10.6的问题。修改后的程序如例10.7所示。[例10.7]#includestruct stu{char name;int num;int age;char addr;}boya,boyb,*pp,*qq;main(){FILE *fp;char ch;int i;pp=boya;qq=boyb;if((fp=fopen(“stu_list“,“wb+“))==NULL){printf(“Cannot open file strike any key exit!“);getch();exit(1);}printf(“\ninput data\n“);for(i=0;i《2;i++,pp++)scanf(“%s%d%d%s“,pp-》name,&pp-》num,&pp-》age,pp-》addr);pp=boya;for(i=0;i《2;i++,pp++)fprintf(fp,“%s %d %d %s\n“,pp-》name,pp-》num,pp-》age,pp-》addr);rewind(fp);for(i=0;i《2;i++,qq++)fscanf(fp,“%s %d %d %s\n“,qq-》name,&qq-》num,&qq-》age,qq-》addr);printf(“\n\nname\tnumber age addr\n“);qq=boyb;for(i=0;i《2;i++,qq++)printf(“%s\t%5d %7d %s\n“,qq-》name,qq-》num, qq-》age,qq-》addr);fclose(fp);} 与例10.6相比,本程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此采用了循环语句来读写全部数组元素。还要注意指针变量pp,qq由于循环改变了它们的值,因此在程序的25和32行分别对它们重新赋予了数组的首地址。文件的随机读写前面介绍的对文件的读写方式都是顺序读写, 即读写文件只能从头开始,顺序读写各个数据。 但在实际问题中常要求只读写文件中某一指定的部分。为了解决这个问题可移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。文件定位移动文件内部位置指针的函数主要有两个, 即 rewind 函数和fseek函数。rewind函数前面已多次使用过,其调用形式为: rewind(文件指针); 它的功能是把文件内部的位置指针移到文件首。 下面主要介绍fseek函数。fseek函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针,位移量,起始点); 其中:“文件指针”指向被移动的文件。 “位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。其表示方法如表10.2。 起始点 表示符号 数字表示──────────────────────────文件首 SEEK—SET 0当前位置 SEEK—CUR 1文件末尾 SEEK—END 2例如:fseek(fp,100L,0);其意义是把位置指针移到离文件首100个字节处。还要说明的是fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。文件的随机读写在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写一个数据据块,因此常用fread和fwrite函数。下面用例题来说明文件的随机读写。[例10.8]在学生文件stu list中读出第二个学生的数据。#includestruct stu{char name;int num;int age;char addr;}boy,*qq;main(){FILE *fp;char ch;int i=1;qq=&boyif((fp=fopen(“stu_list“,“rb“))==NULL){printf(“Cannot open file strike any key exit!“);getch();exit(1);}rewind(fp);fseek(fp,i*sizeof(struct stu),0);fread(qq,sizeof(struct stu),1,fp);printf(“\n\nname\tnumber age addr\n“);printf(“%s\t%5d %7d %s\n“,qq-》name,qq-》num,qq-》age,qq-》addr);} 文件stu_list已由例10.6的程序建立,本程序用随机读出的方法读出第二个学生的数据。程序中定义boy为stu类型变量,qq为指向boy 的指针。以读二进制文件方式打开文件,程序第22行移动文件位置指针。其中的i值为1,表示从文件头开始,移动一个stu类型的长度,然后再读出的数据即为第二个学生的数据。
成块读写函数fread和fwrite
1.函数功能 用来读写一个数据块。2.一般调用形式 fread(buffer,size,count,fp);如 fread(&结构数据, 结构大小, 1, fp); fwrite(buffer,size,count,fp);如 fwrite(&结构数据, 结构大小, 1, fp);3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。 (2)size:要读写的字节数; (3)count:要进行读写多少个size字节的数据项; (4)fp:文件型指针。 注意:读写结束要及时关闭流(fclose(fp)),如果没有关闭,则指针(FILE * fp)自动向后移动前一次读写的长度。如果需要从文件的某个位置开始读写,在打开文件后,需要用fseek(fp, ldata, 0)函数移动指针位置,其中ldata为从文件开头移动的长度。
C语言下提供了哪些有关文件的操作
1,两种文件存取方式(输入,输出方式) 顺序存取 直接存取 2,数据的两种存放形式 文本文件 二进制文件 13.2文件指针 定义文件类型指针变量的一般形式: FILE *指针变量名; 例如: FILE *fp1,*fp2; 13.3打开文件 在使用文件之前,需打开文件.在C里使用fopen函数打开文件.格式为: fopen(文件名,文件使用方式); 此函数返回一个指向FILE类型的指针.如: FILE *fp; fp=fopen(“file_1“,“r“); 如果调用成功,fp就指向file_1,否则返回为NULL,所以为了保证文件的正确使用,要进行测试.采用如下语句: If((fp=fopen(“file_1“,“r“))==NULL) { printf(“Cannot open this file\n“); exit(0); } 最常用的文件使用方式及其含义如下: 1,“r“.为读而打开文本文件.(不存在则出错) 2,“rb“.为读而打开二进制文件. 3,“w“.为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖) 4,“wb“.为写而打开二进制文件. 5,“a“.为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加) 6,“ab“.为在文件后面添加数据而打开一个二进制文件. 最常用的文件使用方式及其含义如下: 7,“r+“.为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变) 8,“rb+“.为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置. 9,“w+“.首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失) 10,“wb+“.功能与“w+“同.只是在随后的读写时,可以由位置函数设置读和写的起始位置. 最常用的文件使用方式及其含义如下: 11,“a+“.功能与“a“相同;只是在文件尾部添加新的数据后,可以从头开始读. 12,“ab+“.功能与“a+“相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置. 13.4关闭文件 当文件的读写操作完成之后,使用fclose函数关闭文件.格式如下: fclose(文件指针) 如:fclose(fp); 13.5调用getc(fgetc)和putc(fputc)函数进行输入和输出 1,调用putc(或fputc)函数输出一个字符 调用形式为: putc(ch,fp); 功能是:将字符ch写到文件指针fp所指的文件中去.当输出成功,putc函数返回所输出的字符;否则,返回一个EOF值.EOF是在stdio.h库 函数文件中定义的符号常量,其值等于-1. 13.5调用getc(fgetc)和putc(fputc)函数进行输入和输出 例如:把从键盘输入的文本按原样输出到名为file_1.dat文件中,用字符@作为键盘输入结束标志. #include Void main() { FILE *fpout; char ch; if(fpout=fpopen(“file_1“,“w“)==NULL) { printf(“Cannot open this file!\n“); exit(0); } ch=getchar(); while(ch!=’@’) { fputc(ch,fpout); ch=getchar(); } fclose(fpout); } 2.调用getc(或fgetc)函数输入一个字符 调用形式为: ch=getc(pf); 功能是:从pf指定的文件中读如一个字符,并把它作为函数值返回. 例如:把一个已存在磁盘上的file_1.dat文本文件中的内容,原样输出到终端屏幕上. #include void main(){ FILE *fpin; char ch; if((fpin=fopen(“file_1.dat“,“r“))==NULL) { printf(“Cann’t open this file!\n“);exit(0);} ch=fgetc(fpin); while (ch!=EOF) { putchar(ch); ch=fgetc(fpin);} fclose(fpin); } 13.6判断文件结束函数feof EOF可以作为文本文件的结束 标志,但不能作为二进制文件的结束符.feof函数既可以判断二进制文件,又可以判断文本文件. 例:编写程序,用于把一个文本文件(源)复制到另一个文件(目的)中,源文件名和目的文件名由命令行输入.命令形式如下: 可执行程序名 源文件名 目的文件名 #include void filecopy(FILE* ,FILE *); void main(int argc,char *argv){ FILE *fpin,*fpout; if(argc==3) { fpin=fopen(argv,“r“); fpout=fopen(argv,“w“); filecopy(fpin,fpout); fclose(fpin);fclose(fpout); } else if(argc》3) printf(“The file names too many!!\n“; else printf(“There are no file names for input or output!!\n ); } void filecopy(FILE *fpin,FILE *fpout) { char ch; ch=getc(fpin); while(!feof(fpin)) {putc(ch,fpout); ch=getc(fpin);} } 13.7fscanf函数和fprintf函数 1,fscanf函数 fscanf只能从文本文件中按格式输入,和scanf函数相似,只不过输入的对象是磁盘上文本文件中的数据.调用形式为: fscanf(文件指针,格式控制字符串,输入项表) 例如:fscanf(fp,“%d%d“,&a,&b); fscanf(stdin,“%d%d“,&a,&b); 等价于scanf(“%d%d“,&a,&b); 3.fprintf函数 fprintf函数按格式将内存中的数据转换成对应的字符,并以ASCII代码形式输出到文本文件中.Fprintf函数和printf函数相似,只是 将输出的内容按格式存放到磁盘的文本文件中.调用形式如下: fprintf(文件指针,格式控制字符串,输出项表) 如:fprintf(fp,“%d %d“,x,y); 以下语句 fprintf(stdout,“%d %d“,x,y) 13.8fgets函数和fputs函数 1,fgets函数 fgets函数用来从文件中读入字符串.调用形式如下: fgets(str,n,fp); 函数功能是:从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符时,则遇到换行符或一个EOF结束本次读操作, 并已str作为函数值返回. 13.8fgets函数和fputs函数 2,fputs函数 fput函数把字符串输出到文件中.函数调用形式如下: fputs(str,fp); 注意:为了便于读入,在输出字符串时,应当人为的加诸如“\n“这样的字符串. 13.9fread函数和fwrite函数 fread and fwrite函数用来读,写二进制文件.它们的调用形式如下: fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); buffer:要输入或输出的数据块的首地址 count:每读写一次,输入或输出数据块的个数 size:每个数据块的字节数 fp:文件指针 13.9fread函数和fwrite函数 例如有如下结构体: struct st{ char num; float mk; }pers; 以下循环将把这30个元素中的数据输出到fp所指文件中. for(i=0;i《30;i++) fwrite(&pers[i],sizeof(struct st),1,fp); 13.9fread函数和fwrite函数 以下语句从fp所指的文件中再次将每个学生数据逐个读入到pers数组中. i=0; fread(&pers[i],sizeof(struct st),1,fp); while(!feof(fp)) { i++; fread(&pers[i],sizeof(struct st),1,fp); } 13.10文件定位函数 1,fseek函数 fseek函数用来移动文件位置指针到指定的位置上,接着的读或写操作将从此位置开始.函数的调用形式如下: fseek(pf,offset,origin) pf:文件指针 offset:以字节为单位的位移量,为长整形. origin:是起始点,用来指定位移量是以哪个位置为基准的. 1,fseek函数 位移量的表示方法 标识符 数字 代表的起始点 SEEK_SET 0 文件开始 SEEK_END 2 文件末尾 SEEK_CUR 1 文件当前位置 假设pf已指向一个二进制文件,则; fseek(pf,30L,SEEK_SET) fseek(pf,-10L*sizeof(int),SEEK_END) 对于文本文件,位移量必须是0;如: fseek(pf,0L,SEEK_SET) fseek(pf,0L,SEEK_END) 2. ftell函数 ftell函数用以获得文件当前位置指针的位置,函数给出当前位置指针相对于文件开头的字节数.如; long t; t=ftell(pf); 当函数调用出错时,函数返回-1L. 我们可以通过以下方式来测试一个文件的长度: fseek(fp,0L,SEEK_END); t=ftell(fp); 3.rewind函数 调用形式为: rewind(pf); 函数没有返回值.函数的功能是使文件的位置指针回到文件的开头.
C++ 关于 fwirte 和fread
首先这是C的 文件的读写函数 fwirte,fread一般用于二进制文件的输入输出,所以你看到的东西是二进制形式的 自然就看不懂了fread 读到屏幕上又能看看懂是fread 是把二进制转换成了文本形式输出了。
- 1bat的大数据(BAT的大数据来源)
- 2三星s8屏幕上端2(三星s8屏幕上端2个按键)
- 3三星屏幕坏了如何导出(三星屏幕摔坏了如何导出数据么)
- 4红米3x怎么关闭自动更新(红米k40s怎么关闭自动更新)
- 5微信上防止app自动下载软件怎么办(微信上防止app自动下载软件怎么办啊)
- 6押镖多少钱(押镖一个月有多少储备金)
- 7瑞星个人防火墙胡功能(瑞星个人防火墙协议类型有哪些)
- 8cf现在等级是多少(cf等级2020最新)
- 9老滑头多少条鱼(钓鱼老滑头有什么用)
- 10WPS自动调整语法(wps如何修改语法)
- 11dell控制面板防火墙(dell的防火墙怎么关闭)
- 12丑女技能升多少(丑女技能需要满级吗)
- 13智能家居系统怎么样(智能家居系统好吗)
- 14戴尔屏幕(戴尔屏幕闪烁)
- 15y85屏幕信息(vivoy85息屏显示时间怎么设置)
- 16魅蓝note3屏幕出现方格(魅蓝note屏幕竖条纹)
- 17v8手指按屏幕(触屏手指)
- 18金为液晶广告机(液晶广告机lb420)
- 19三星显示器怎么校色(三星显示器 调色)
- 20hkc显示器dvi音频(hkc显示器有音响么)
- 21康佳液晶智能电视机(康佳液晶智能电视机怎么样)
- 22做液晶画板电脑(做液晶画板电脑怎么操作)
- 23液晶屏极化现象原理(液晶屏极化现象原理是什么)
- 24企业网络安全防火墙(企业网络防护)
- 256splus黑屏屏幕不亮(苹果6s plus屏幕突然黑屏)
- 26充电导致屏幕失灵(充电导致屏幕失灵怎么办)
- 27超极本屏幕旋转(笔记本电脑屏幕旋转,怎么转过来?)
- 28igmp防火墙(防火墙配置ipv6)
- 29荣耀王者多少经验(王者荣耀经验多少一级)
- 30lol老将还剩多少(qg老将)