由于fopen函数中读取文件的符号,“r”,"r+"都需要该文件存在,我们创建一个file1
image.png

#include<stdio.h>
#include<stdlib.h>

int main(){

    FILE *file1,*file2;
    int ch;
    //先进行错误判断,再开始你的任务
    if(!(file1 = fopen("file1","rw+"))){
        perror("open file1\n");
        exit(1);
    }
    if(!(file2 = fopen("file2","w+"))){
        perror("open file2\n");
        exit(1);
    }
    while((ch = fgetc(file1)) != EOF){
        fputc(ch,file2);
    }

    fclose(file1);
    fclose(file2);

    return 0;
}

运行之后得到的file2结果和file1一样,完成复制!
image.png

接下来我们利用fgets()函数来实现逐行字符串复制到另外一个文件!首先还是先把要读取的文件file1写一下:
image.png

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    FILE *file1,*file2;
    if(!(file1 = fopen("file1","r+"))){
        perror("open file1\n");
        exit(1);
    }
    if(!(file2 = fopen("file2","w+"))){
        perror("open file2\n");
        exit(1);
    }
    char *s = (char*)malloc(100);
    // int n = 100;
    while(!(feof(file1))){//当file1不为空时
    // while(fgets(s,100,file1)!=NULL){//也可以这么判断
    //fgets调用在读入若干个字符后到达文件末尾,则将已读到的字符串加上'\0'存入缓冲区并返回
    //如果再次调用fgets则返回NULL,可以据此判断是否读到文件末尾。
        fgets(s,100,file1);//用fgets(s,100,file1)!=NULL时就不要重复执行该函数了,while内已经执行
        fputs(s,file2);

    }
    free(s);
    fclose(file1);
    fclose(file2);
    return 0;
}

再来看看执行之后产生的副本文件file2的内容:
image.png
好的,已经成功完成复制!


沐小轲
9 声望0 粉丝

C++初学者