C语言实验 文本操作
文件操作
实验目的
1.掌握文件的基本概念
2.掌握文本文件的打开和关闭操作
3.掌握文本文件的顺序读写方法
实验条件:
PC 计算机, 或 操作系统, 及以上版本,
Dev-C++5.11 及以上版本或 Code .01 及以上版本。
实验内容
1.程序调试
将字符写入文件:从键盘输入一行字符,写到文件 a.txt 中。
源程序(有错误)
#include
#include
int main()
{ char ch; FILE fp; if((fp=fopen("a.txt","w")!=NULL)) { printf("Can't Open File!"); exit(0); }while ((ch=getchar())!='\n') //调试时设置断点 { fputc(ch, fp); }fclose(fp); return 0;
}
程序清单如下:
#include
#include
int main()
{ char ch; FILE *fp; if((fp=fopen("a.txt","w+"))==NULL)//先赋值,后判断是否为空 { printf("Can't Open File!"); exit(0); }while ((ch=getchar())!='\n')
//调试时设置断点 { fputc(ch, fp); }fclose(fp); return 0;
}
该程序的运行结果如图一、图二所示:
图一
图二
2.基础编程
(1)编写程序从文本文件中读取整数,文件的每一行可以包含任意数量的整数
(也可以没有),中间用一个或多个空格隔开。程序显示文件中的最大数和最小
数以及中值(整数有序的情况下最接近中间的那个数。)如果文件中包含偶数个
整数,中间会有两个整数,程序显示它们的均值(向下取整)。可以假定文件中
包含的整数个数不超过 10000。
生成随机数程序清单如下:
#include
#include
#include
int main()
{ FILE *fp; int i,num; if((fp=fopen("y.txt","w+"))==NULL)//先赋值,后判断是否为空 { printf("Can't Open File!"); exit(0); }//clearerr(fp); srand(time(NULL)); for(i=0;i<1000;i++) { num=rand()%1000+1; fprintf(fp,"%6d",num); //fprintf(fp,"\t"); }return 0;
}
读取文件最大值,最小值,中值程序清单如下:
#include #include int main() { FILE *fp; int i=0,num[1000],j,temp=0,aver; int count=0; if((fp=fopen("y.txt","r"))==NULL)//先赋值,后判断是否为空 { printf("Can't Open File!"); exit(0); }while(!feof(fp)) { fscanf(fp,"%6d",&num[i]); i++; count++; }for(i=0;i<count-1;i++){ for(j=i+1;j<count;j++) { if(num[i]<num[j]) { temp=num[i]; num[i]=num[j]; num[j]=temp; } } }printf("max=%d",num[0]); printf("min=%d",num[count-1]); if(count%2==0) { printf("mid=%d",num[count/2]); }else if(count%2!=0) { aver=(num[(count+1)/2]+num[(count-1)/2]); printf("mid=%d",aver); }
}
该程序的运行结果如图二所示:
图二