读了 size*count 个字节 fread(buffer,size,count,fp); // 往 文 件 中 写 二 进 制 数 据 , 把 buffer 所 指 向 的 内 存 中 数 据 写 入 文 件 。 写 了 size*count 个字节 fwrite(buffer,size,count,fp); - 76 - //不加 f 表示格式输入和输出,对象是键盘和显示器 //加了 f 表示文件格式输入和输出,对象都是文件, fscanf(fp,格式字符串,输入列表); //从文件中格式输入 fprintf(fp,格式字符串,输出列表); //往文件中格式输出 fgets(str,n,fp); //从文件中读字符串(文本) ,长度<=n-1 fputs(str,fp); //往文件中写字符串(文本) (6)文件的关闭操作 fclose(fp); (7)文件的定位 文件指针:指向某个文件 文件位置指针:指向文件中的读写位置 rewind(fp); //将文件位置指针移动到文件的开头 fseek(文件类型指针, 位移量, 起始点) //将文件位置指针移动到指定位置 位移量:整数,长整型 起始点:SEEK_SET,SEEK_CUR,SEEK_END <===> 0,1,2 fseek(fp,10L,SEEK_SET); //将文件位置指针从文件的开头向后移动 10 个字节 fseek(fp,-10L,SEEK_END); //将文件位置指针从文件的尾部向前移动 10 个字节 fseek(fp,0L,SEEK_END); //将文件位置指针移动文件的末尾 fseek(fp,-1L,1); //将文件位置指针从当前位置向前移动 1 个字节 ftell(); //返回当前文件位置指针 (8)判断是文件位置指针否到文件的末尾 判断是文件位置指针否到文件的末尾(是否读到文件的最后了) feof(fp) 到文件末尾,函数返回值为 1 没到文件末尾,函数返回值为 0 二进制文件 while(!feof(fp)) { ....存取 } 文件文件 ch=fgetc(fp) while(ch != EOF) //判断所读字符是否为文件结束标志 { ...,, ch=fgetc(fp); //读下一个字符 } ? 程序编制 - 77 - EOF 的值为-1 程序 1: 调用函数 fun 将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回 值是 1,失败时返回值为 0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源 文件名放在变量 sfname 中,目标文件名放在变量 tfname 中。 #include #include int fun(char *source, char *target) { FILE *fs,*ft; char ch; if((fs=fopen(source, "r"))==NULL) return 0; if((ft=fopen(target, "w"))==NULL) return 0; printf("\nThe data in file :\n"); ch=fgetc(fs); while(!feof(fs)) { putchar( ch ); fputc(ch, ft); ch=fgetc(fs); } fclose(fs); fclose(ft); printf("\n\n"); return 1; } main() { char sfname[20] ="myfile1",tfname[20]="myfile2"; FILE *myf; int i; char c; myf=fopen(sfname,"w"); printf("\nThe original data :\n"); for(i=1; i<30; i++){ c='A'+rand()%25; fprintf(myf,"%c",c); printf("%c",c); } fclose(myf);printf("\n\n"); if (fun(sfname, tfname)) printf("Succeed!"); else printf("Fail!"); } - 78 -