1 / 7

文 件 一、文本文件的读写 二、二进制文件的读写

文 件 一、文本文件的读写 二、二进制文件的读写. 一、文本文件的读写 文本文件的读写可以是单个字符的读写(用 fgetc/fputc 函数)、字符串读写(用 fgets/fputs 函数)、带格式的读写(用 fscanf/fprintf 函数)。 例:习题集 P211 1 题 编写程序统计指定文件中出现 “ if” , “ while” , “ for” 单词的次数。

salaam
Download Presentation

文 件 一、文本文件的读写 二、二进制文件的读写

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 文 件 一、文本文件的读写 二、二进制文件的读写

  2. 一、文本文件的读写 文本文件的读写可以是单个字符的读写(用fgetc/fputc函数)、字符串读写(用fgets/fputs函数)、带格式的读写(用fscanf/fprintf函数)。 例:习题集P211 1题 编写程序统计指定文件中出现“if”,“while”, “for”单词的次数。 分析:首先从指定文件中逐个读字符,存入一个一维字符数组中,然后在该数组中分别查找题中所指定的三个单词并计数。具体做法是:编写一个函数,功能是查找指定字符串,统计其出现次数,统计结果作为返回值返回主调函数。主函数输入数据后调用三次函数,完成对 “if”,“while”, “for”的统计。

  3. 查找指定字符串函数 int search(char *str,char *fstr) { int m,n=0,l=0; char *ps=fstr; m=strlen(fstr); while(*str!=‘\0’) /*对str指向的字符串逐个扫描 */ { while(*ps!=0) { if(*ps!=*str)break; /*搜索fstr指向的字符串 */ else {ps++; str++; l++;} } if(l>=m) { n++; ps=fstr;} else if(l>=1) ps=fstr; else str++; l=0; } return n; } /*str是指向源数组的指针,fstr是指向要查找字符串的指针。*/

  4. 主函数输入数据 FILE *inf; inf=fopen("T1301.TXT","r"); if(inf!=NULL) { while (!feof(inf)) { str[i]=fgetc(inf); i++; } str[i]=‘\0’; } 调用search函数 in=in+search(str,"if"); wn=wn+search(str,"while"); fn=fn+search(str,"for");

  5. 二、二进制文件的读写 二进制文件的读写一般使用块读写函数fread/fwrite来实现。数据块的块数及每个数据块的字节数都由用户在函数的参数中指定。 例:习题集P211 4题 编写程序输入100个学生的信息(包括学号、姓名、年龄、7科成绩、自动计算总分),统计所有学生的总分,并按总分由大到小排序存入到二进制数据文件T1304.db中。 分析:按照题目要求,程序应定义结构体数组存放学生信息,然后输入学生信息,计算每个学生的总分,按总分排序,最后再用块写函数fwrite将排序后的数组存入文件T1304.db中。

  6. 1)定义结构体数组: #define N 100 struct stu { int no; char name[12]; int age; int sc[7]; int sum; }s[N]; 2)输入学生信息并计算每个学生的总分 N名学生,当然要循环N次,每次输入一个学生的信息,输入时要按成员逐个输入,之后将7科成绩相加,存入成员sum中。

  7. 3)按总分由大到小排序 排序可用选择法、冒泡法等。注意一个问题,即本题的数组是结构体数组,两个元素交换时,如果要元素整体赋值,那么所采用的中间变量必须是与数组同类型的结构体变量。例如s[i]与s[j]交换,st=s[i];s[i]=s[j];s[j]=st; 则要定义struct stu st; 要么就将s[i]与s[j]的各成员相互交换。 4)将排序后的数组存入文件T1304.db中 fp=fopen("t1304.db","wb"); for(i=0;i<N;i++) fwrite(&s[i],sizeof(struct stu),1,fp); fclose(fp);

More Related