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改为用文件实
现。