樊媛媛《c言程序设计》13-文件.pptVIP

  • 3
  • 0
  • 约7.42千字
  • 约 42页
  • 2019-01-04 发布于浙江
  • 举报
樊媛媛《c言程序设计》13-文件

上例的检索方法称为“定位检索”。 如果是非定长格式,则需要用“遍历检索”。 f2-1.dat while ( !feof ( fp ) ) { fscanf ( fp, ”%d%s%d”, st.num, st.name, st.score ); if ( st.num==no ) { printf ( “\n%5d%10s%4d”, st.num, st.name, st.score ); break; } } T13-3-2.c 速度慢,但不受限制 综合例: 已知文本文件f3.dat中存放有武汉市所有公民的有关性别和年龄的数据,请编写程序分别找出其中10名男寿星和10名女寿星,并将20名寿星的数据以文本文件的方式存入到文件f4.dat中(先男后女)。 说明: ①?文件f3.dat中每行为一个公民的数据,共有3项,依次为:姓名(不超过10个字符)、性别(0表示男,1表示女)和年龄(整数),项间以空格分隔。 ②? 未给出公民个数,将文件中的数据读完为止。 算法思想: 开辟一个存放20名寿星数据的结果表a(结构体数组),然后逐个读取公民数据,每读取一个就向a中“判断插入”一个,男性公民往前段插,女性公民往后段插。 读一个公民的数据到p 读完否? N Y Wanghao 0 100 Liming 0 98 ┊ wudan 1 99 xiaofang 1 95 ┊ 男性插入 女性插入 寿星表a #include stdio.h typedef struct { char name[10]; int sex; int age; } PEP; 插入函数,将一个公民的数据插入到寿星表 从大到小 void insert (PEP *x, int n, PEP t ) { int i,j; if ( t.age = x[n-1].age ) return ; for ( i =0; in; i++) if (t.agex[i].age) break; for ( j=n-1; ji; j--) x[j]=x[j-1]; 移位 x[i]=t; 插入 } main() { int j; PEP p,a[20]; FILE *fp; fp=fopen (“f3.dat”,”r”); if(!fp) exit(0); for (j=0;j20;j++) a[j].age=0; while( !feof ( fp ) ) { fscanf ( fp, ”%s%d%d\n”, p.name, p.sex, p.age ); insert (a+10*p.sex,10,p); } fclose(fp); fp=fopen(“f3-1.dat”,”w”); for(j=0;j20;j++) fprintf(fp,”\n%15s%2d%5d”, a[j].name, a[j].sex,a[j].age ); fclose ( fp ); } T13-4.c 字符输入输出 标准输入输出 putchar(ch); ch=getchar(); 文件输入输出 fputc(ch,fp);? putc(ch,fp); ch=fgetc(fp);? ch=getc(fp); 字符串输入输出 标准输入输出 puts(字符数组); gets(字符数组); 文件输入输出 int fputs(char *s, FILE *stream); char * fgets(char * s, int n,FILE *stream); * 第十三章 文件 3.1 文件概述 ■文件概念 所谓文件就是:存储在外部介质上 的信息集合。 根据存储的介质不同可分为: 磁盘文件、磁带文件等。 根据内容的不同可分为: 程序文件、数据文件等。 ■使用文件输入输出的必要性 这里主要讨论数据文件的输入输出,即如何将文件中的数据“输入”到程序的数据结构中,如何将

文档评论(0)

1亿VIP精品文档

相关文档