编写程序,在文件file1.dat中存入字符串“good morning”,然后将file1.dat中的内容输出到屏幕上,并复制到文件file2.dat中

《程序设计基础-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函数只能检测到他前面一个字符是否是文件结束标志,所以会多一个乱码
编写程序,在文件file1.dat中存入字符串“good morning”,然后将file1.dat中的内容输出到屏幕上,并复制到文件file2.dat中_第1张图片
在这里插入图片描述
修改方法定义一个变量判断是否是EOF
编写程序,在文件file1.dat中存入字符串“good morning”,然后将file1.dat中的内容输出到屏幕上,并复制到文件file2.dat中_第2张图片
在这里插入图片描述



在读取字符串的这个问题会使文件最后一个字符串多读一次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

你可能感兴趣的:(#,专升本c语言)