1 实验八 文 件 一、实验目的 掌握C语言的流式文件概念和文件读写函数的使用。 二、实验要求 1. 学会建立磁盘数据文件,进行数据文件的输入和输出。 2. 能熟练运用文件处理函数:fopen,fclose,fgetc,fputc,fgets,fputs,fseek,ftell, fprintf, fscanf, fread,fwrite。 3. 能编写一般的文件处理类程序。 4.编写实验报告(八)。 三、实验内容 8-1 读程序S8-1.C,指出其功能,说明并写出程序的执行过程。 源程序S8-1.C # include <stdio.h> main (int argc,char *argv[ ]) { if (argc!=3) printf("\n Format: MyCopy <source-file><destin_file>\n"); else { FILE *source,*destin; source=fopen(argv[1],"rb"); destin=fopen(argv[2],"wb"); if(source= =NULL) printf("ERROR:Can't open source file %s! \n",argv[1]); else if(destin= =NULL) printf("ERROR: Can't open destin file %s! \n",argv[2]); else { while (!feof (source)) fputc (fgetc(source),destin); } fclose(source); fclose(destin); } } 8-2 请完善分屏显示文本文件内容的程序S8-2.C。 源程序S8-2.C #include <stdio.h> main(int argc,char *argv[ ]) { 2 } 8-3 程序S8-3.C用fwrite()函数把一个整型数组中的数据写到一个指定文件 S8-3.dat中,再用fread()函数从该文件中读出数据到整型数组中,试完成该 程序。 源程序S8-3.C main() { static int array [ ]={15,25,35,45,55,65,75,85,95,105}; int i; FILE * fp; fp=fopen("8-3.DAT","wb"); } 8-4 在磁盘上建立一个S8-4.DAT文件,在文件中存入以下内容: October 27, 1891: Philip Downing is an American inventor. On that day, people start to use his letterboxes. He makes the street letterbox better. He gives it a cover so the letters are safe from the rain and bad people. Today people still use this kind of letterbox. 编写程序S8-4.C,读出S8-4.DAT文件中的内容,并显示在屏幕上,再把这 些内容写入另一个文件S8-4.out中,检查写入是否正确。 8-5 程序S8-5.C要求用fprintf()函数将array数组的5组整数写入文件S8-5.DAT 中,1组数据作为1个记录,共写入5个记录,试完善程序。 源程序S8-5.C #include <stdio.h> main() { int i,j,array[5][5]={{1,2,3,4,5},{11,12,13,14,15}, {21,22,23,24,25},{31,32,33,34,35}, {41,42,43,44,45}}; FILE *fp; } 8-6 程序S8-6.C的功能是从键盘输入一个字符串,将其中的小写字母全部转换 为大写字母,然后输出到文件S8-6.DAT中保存,输入的字符串以“!”结束。 程序多处有错,请调试并改正。允许修改和添加语句,但不得删除整行。 源程序S8-6.C #include<stdio.h> main() { file *fp; char str[100],filename[10]; int i=0; if((fp=fopen("8-7.DAT","w"))=NULL) { printf("Open file error\n"); exit(0); 3 } printf("please enter a string:\n"); gets(str[i]); while(str[i]!='!') { if(str[i]>='a'&&str[i]<='z') str[i]=str[i]+32; fputc(str[i],fp); } fclose(fp); fp=fopen("8-7.DAT","w"); fgets(str,strlen(str)+1,fp); printf("%s\n",str); fclose(fp); } *8-7 编写程序S8-7.C,模拟用户注册和登录的过程。将S6-9.C改为用文件实 现。