文件操作
实验目的
1.掌握文件的基本概念
2.掌握文本文件的打开和关闭操作
3.掌握文本文件的顺序读写方法
实验条件:
PC 计算机,Windows7 或 Windows10 操作系统,Office2010 及以上版本,
Dev-C++5.11 及以上版本或 Code Blocks16.01 及以上版本。
实验内容
1.程序调试
将字符写入文件:从键盘输入一行字符,写到文件 a.txt 中。
源程序(有错误)
#include<stdio.h>
#include<stdlib.h>
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<stdio.h>
#include<stdlib.h>
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<stdio.h>
#include<time.h>
#include<stdlib.h>
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<stdio.h>
#include<stdlib.h>
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);
}
}
该程序的运行结果如图二所示:
图二