文件实验陈正宁123349.docx
- 文档编号:7894699
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:11
- 大小:234.08KB
文件实验陈正宁123349.docx
《文件实验陈正宁123349.docx》由会员分享,可在线阅读,更多相关《文件实验陈正宁123349.docx(11页珍藏版)》请在冰豆网上搜索。
文件实验陈正宁123349
淮海工学院计算机科学系
实验报告书
课程名:
《C语言程序设计
(二)》
题目:
实验12文件
班级:
软嵌151
学号:
2015123349
姓名:
陈正宁
1、实验内容或题目
(1)编程将一个文本文件的内容复制到另一个文本文件中。
(2)编写一个程序,实现以下功能:
a)输入一系列的数据(学号、姓名、成绩)存放在二进制文件stud.dat中;b)从该文件中读出这些数据并显示出来。
(3)编写一个程序实现以下功能:
a)将由若干行(每行最多80个字符,最多100行)组成的一篇文章写入到文件in.dat中;b)从文件in.dat中读出这些字符串到xx数组中并显示;c)对xx数组中的字符串按字典顺序递增排序并将排序后的结果存入文件out.dat中;d)从文件out.dat中读出所有数据并显示。
2、实验目的与要求
(1)掌握磁盘文件的打开、关闭等基本操作;
(2)熟练掌握二进制文件和文本文件的读写操作;
(3)掌握文件字符、字符串的读写以及格式化读写;
(4)熟练掌握文件的随机读写。
3、实验步骤与源程序
实验步骤
(1)、
(2)、
(3)、
源代码
(1)、
#include
#include
voidmain()
{
FILE*from,*to;
charin[30],out[30];
printf("请输入要复制的文件名\n");
scanf("%s",in);
printf("请输入要粘贴的文件名\n");
scanf("%s",out);
if((from=fopen(in,"r"))==NULL)
{
printf("输入复制文件名有错误\n");
exit(0);
}
if((to=fopen(out,"w"))==NULL)
{
printf("输入粘贴文件名有错误\n");
exit(0);
}
printf("\n\n");
printf("正在复制,请稍后\n");
printf(".............\n\n");
printf("复制完成,请查收\n");
while(!
feof(from))
{
fputc(fgetc(from),to);
}
fclose(from);
fclose(to);
}
(2)、
#include
#include
#include
#defineN20
structstudent
{
charnum[N];
charname[N];
charscore[N];
}stu[N];
intmain(intargc,char*argv[])
{
FILE*fp;
intn,i;
if(!
(fp=fopen("stud.dat","wb")))
{
fprintf(stderr,"\nCANNOTOPENTHEFILE!
\a\a\a");
getch();
exit(-1);
}
printf("请输入学生人数:
");
scanf("%d",&n);
for(i=0;i { printf("请输入学生学号: "); scanf("%s",stu[i].num); printf("请输入学生姓名: "); scanf("%s",stu[i].name); printf("请输入学生成绩: "); scanf("%s",stu[i].score); } for(i=0;i { if(1! =fwrite(&stu[i],sizeof(structstudent),1,fp)) { fprintf(stderr,"\n文件打开错误! \n"); getch(); exit(-1); } } printf("\n\n"); rewind(fp); if(! (fp=fopen("stud.dat","rb"))) { fprintf(stderr,"\n文件打开错误! \n"); getch(); exit(-1); } printf("学号姓名分数\n"); for(i=0;i { if(1! =fread(&stu[i],sizeof(structstudent),1,fp)) { if(feof(fp)) { fclose(fp); return0; } fprintf(stderr,"\n文件打开错误! \n"); } printf("%8s%8s%5s\n",stu[i].num,stu[i].name,stu[i].score); } fclose(fp); return0; } (2)、 #include #include #include #include #defineMAX80 intmain(intargc,char*argv[]) { voidsort(char(*p)[MAX],intn); FILE*fp; chara[100][MAX],xx[100][MAX]; intn; if(! (fp=fopen("in.dat","wb+"))) { fprintf(stderr,"\nCANNOTOPENTHEFILE! \a\a\a"); getch(); exit(-1); } printf("请输入多少行文章: ");//功能a scanf("%d",&n); for(inti=0;i { printf("请输入第%d行: ",i+1); scanf("%s",&a[i]); fputs(a[i],fp); fputs("\n",fp); } rewind(fp);//功能b printf("\n"); printf("in.dat内的数据为: \n"); for(i=0;i { fgets(xx[i],81,fp); printf("%s",xx[i]); } sort(xx,n);//功能c if(! (fp=fopen("out.dat","wb+"))) { fprintf(stderr,"\nCANNOTOPENTHEFILE! \a\a\a"); getch(); exit(-1); } printf("\n"); printf("in.dat内的数据经排序后存入out.dat为: \n");//功能d for(i=0;i { fputs(xx[i],fp); printf("%s",xx[i]); } fclose(fp); return0; } voidsort(char(*p)[MAX],intn) { inti,j,k; chartemp[100]; for(i=0;i { k=i; for(j=i+1;j { if(strcmp(p[k],p[j])>0) { k=j; } } if(k! =i) { strcpy(temp,p[i]); strcpy(p[i],p[k]); strcpy(p[k],temp); } } } 4、测试数据与实验结果(可以抓图粘贴) (1)、 (2)、 (3)、 5、结果分析与实验体会 (1).文件有不同的类型,在程序设计中,主要用到两种文件: 程序文件,数据文件,而我们主要讨论的是数据文件。 (2).要熟悉掌握使用文件方式表,P335页。 (3).在使用完文件指针后一定要养成最后使用fclose来关闭文件指针的习惯。 (4).我们可以使用顺序读写数据文件也可以随机读取数据文件。 (5)C提供了一些函数用来检查输入输出函数调用时可能出现的错误: 1.ferror函数 2.clearerr函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件 实验 正宁 123349