C语言实验十_c语言实验十
C语言实验十由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言实验十”。
实验10 文件程序设计
一、实验目的1、掌握文件、文件指针的概念。
2、学会使用文件打开、关闭、读、写等文件操作函数。
二、实验内容 1.改错题
(1)下列程序的功能为:在键盘输入4行字符写到D盘data1.dat文件中。纠正程序中存在的错误,以实现其功能。程序以文件名sy10_1.c保存。#include #include void main(){ FILE * fp1;char ch[80];int I,j;fp1=fopen(“d:data1.dat”,”b”);for(i=1;i
gets(ch);
j=0;
while(ch[j]!=’ ’)
{
fputc(fp1,ch[j]);
j++;
}
fputc(fp1,’n’);}
fclose(fp1);}(2)下列程序的功能为:随机产生10个整数,写入一个文本文件中。纠正程序中存在的错误,以实现其功能。程序以文件名sy10_2.c保存。#include #include #include void main(){ int x[10],i,k;FILE *fp2;srand((unsigned)time(NULL));for(i=0;i
x[i]=rand();fp2=fopen(“data2.dat”,”wb”);if(fp2==NULL){
printf(“Open error n”);exit(0);} for(int k=0;k
fwrite(x[k],sizeof(int),fp2);fclose(fp2);}
(3)下列程序的功能为:从数组读入数据,建立ASCII码文件,并按下列格式输出。10 20 30 40 50 60 70 80 90 100(每个数据占5个字符宽度)纠正程序中存在的错误,以实现其功能。程序以文件名sy10_3.c保存。#include #include void main(){
FILE *fp3;int b[]={10,20,30,40,50,60,70,80,90,100},i=0,n;if((fp3=fopen(“e:file10_3.txt”,”w”))==NULL){
printf(“%s不能打开n”,”e:file10_3.txt”);
exit(1);} while(i
fprintf(fp3,”%d”,b[i]);
if(i%3==0)fprintf(fp3,”n”);
i++;} fclose(fp3);if((fp3=fopen(“e:file10_3.txt”,”r”))==NULL){
printf(“%s不能打开n”,”e:file10_3.txt”);
exit(1);} fscanf(fp3,”%5d”,&n);while(!feof(fp3)){
printf(“%5d”,n);
fscanf(fp3,”%d”,&n);} printf(“n”);
fclose(fp3);}
2.程序填空题
(1)下列程序的功能是:从字符指针数组读出字符串,建立ASCII文件file10_4.txt。补充完善程序,以实现其功能。程序以文件名sy10_4.c保存。#include #include void main(){
FILE *fp;int i=0;char *str[]={“visual C++”, “visual Basic”, “visual java”, “visual foxpro”};if((fp=fopen(“e:file10_4.txt”,_________________))==NULL){ printf(“%s不能打开n”,”e:file10_4.txt”);
exit(1);} while(i
fprintf(_______________________);
_________________________________;} fclose(fp);}
(2)下列程序的功能为:从键盘输入字符,直到输入EOF(Ctrl+Z)为止。对于输入的小写字符,先转换为相应的大写字符,其他字符不变,然后逐个输出到文件text.txt中,行结束符回车('n’)也作为一个字符对待,最后统计文件中的字符个数和行数。补充完善程序,以实现其功能。程序以文件名sy10_5.c保存。#include main(){
FILE *fp;char c,str[256];int i=0,no=0,line=0;if((fp=fopen(“text.txt”,_________________))==NULL){ printf(“can’t open this file.n”);
exit(0);} printf(“please input a string.n”);while((c=getchar())!=EOF){
if(c>=’a’ && c
fputc(_________________,fp);} fclose(fp);if((fp=fopen(“text.txt”,”r”))==NULL){ printf(“can’t open this file.n”);
exit(0);} while(!eof(fp)){
c=__________________;
no++;
if(_________________)line++;} printf(“line=%d character_no=%dn”,line,no);fclose(fp);}
(3)下列程序的功能为:从字符指针数组读出字符串,建立和输出二进制文件file10_6.dat。补充完善程序,以实现其功能。程序以文件名sy10_6.c保存。#include #include #include void main(){ FILE *fp6;int i=0;char str[][20]={“visual C++”, “visual Basic”, “visual java”, “visual foxpro”};char s[20];if((fp6=fopen(“e:file10_6.dat”,_________________))==NULL){ printf(“%s不能打开n”,”e:file10_6.dat”);
exit(1);} while(i
fwrite(_______________,_______________,1,fp6);
i++;} fclose(fp6);if((fp6=fopen(“e:file10_6.dat”,_________________))==NULL){ printf(“%s不能打开n”,”e:file10_6.dat”);
exit(1);} fread((______________,______________,1,fp6);while(!feof(fp6)){
printf(“%sn”,s);
fread((_______________,_____________,1,fp6);} fclose(fp6);} 3.编程题
(1)设文件number.dat中放了一组整数,编程计算并输出文件中正整数之和、负整数之和。程序以文件名sy10_7.c保存。
(2)根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将源文本文件的内容追加到目的文本文件的原内容之后,并在程序运行过程中显示源文件和目的文件中的文件内容,以此来验证程序执行结果。程序以文件名sy10_8.c保存。
(3)有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。程序以文件名sy10_9.c保存。