《程序设计基础-c语言》杨莉 刘鸿翔
ISBN-978-7-03-032903-5
p257
习题8
7.编写程序,在文件file1.dat
中存入字符串“good morning
”,然后将file1.dat
中的内容输出到屏幕上,并复制到文件file2.dat
中
#include
#include
#include
int main()
{
FILE *fp,*fp1; //定义文件指针
if((fp=fopen("file1.dat","w"))==NULL) //以写方式打开文件,让fp指向文件
{
printf("error\n"); //文件打开失败,fopen函数会会返回空
exit(0); //退出作用,头文件srdlib.h
}
fputs("good morning",fp); //向fp所指向的文件输出字符串“good morning”
fclose(fp); //关闭文件
if((fp=fopen("file1.dat","r"))==NULL) //以读方式打开文件,让fp指向文件
{
printf("error\n");
exit(0);
}
char ch; //定义一个字符,用于接收fgetc读入的字符
while((ch=fgetc(fp))!=EOF) //利用fgetc从文件读数据(即单个字符读),遇到文件结束符EOF结束
{
putchar(ch); //输出字符
}
putchar('\n');
rewind(fp); //文件指针移到开头(经过上面的读取,文件指针已移到文件末尾)
if((fp1=fopen("file2.dat","w"))==NULL)//以读方式打开文件,让fp1指向文件
{
printf("error\n");
exit(0);
}
while(!feof(fp)) //feof函数用以检测文件是否结束【结束返回1,未结束返回0】
{
fputc(fgetc(fp),fp1); //fetc从文件读出的字符,输出到fp1所指向的文件中
}
fclose(fp);
fclose(fp1);
return 0;
}
file2.dat
文件最后一个字符是乱码的原因:
因为feof函数只能检测到他前面一个字符是否是文件结束标志,所以会多一个乱码
修改方法:定义一个变量判断是否是EOF