c语言如何读取一个已知TXT文件然后输出到另一个文件

如何用c语言读取一个已知txt文件的数据然后输出到另一个文件,卡到这一步,接下来怎么弄?

img

可以通过fprintf和fgetc这两个函数比较简单的执行文件复制操作,修改如下:


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

int main(void){
    
    FILE * fp;
    int filelen = 0;
    int i = 0;
    char * buf;
    //打开原文件 
    if((fp=fopen("f:\\1.txt","r"))==NULL){
        printf("can't open file!\n'");
        exit(0);
    }
    
    //打开或创建备份文件 
    FILE * outfp  = fopen("f:\\1bank.txt","w+");
    if(outfp==NULL){
        printf("open file or create file error!\n ");
        exit(0);
    }
    
    char ch;
    //执行复制操作 
    while((ch=fgetc(fp))!=EOF){
        fprintf(outfp,"%c",ch);
    }
    

    
//    fseek(fp,0,SEEK_END);
//    filelen=ftell(fp);
//    rewind(fp);
//    buf= (char *)malloc (filelen+1);
//    for(i=0;i<filelen+1;i++){
//        buf[i] = 0;
//    }
//    
//    fread(buf,filelen,1,fp);
    
    fclose(fp);
    fclose(outfp);
    
    return 0;
    
} 

read之后可以将文件内容读入到程序中某个buffer数组(就是一个用于存放数据的char数组),然后再将buffer内容写入新的文件即可
可以单次写入全部内容,也可以每次读一部分分步写入.
参考fread和fwrite的用法

你这是文件读取部分,只需要再定义一个FILE * fp2,然后fopen打开需要写入的文件,将fread读取的数组用fwrite写入新文件就行了
你这个文件的打开方式不对啊,w是写文件,读文件用r
你把源代码贴出来,不要用图片,可以给改一改

从两个层面说一下:
功能方面:
采用fread方式从一个文件A读取内容后放在本地buff中,再从本地buff中使用fwrite写入对应文件B的fd中。相关接口是:
fopen();fread(); fwrite();
性能方面:
假设我们读取的文件有1个g,那么如何快速的将文件内容迁移呢?
解决这个问题首先我们要了解一下文件的读取操作是如何开展的,当你调用了fread后,操作系统会进入内核态将磁盘上的内容读取到内核空间,然后将内核空间里保存的内容放入用户空间,一共是2次拷贝过程,同理,fwirte也是。这就是效率慢的原因了。

如何解决?
linux 2.7.3以上的内核版本提供了一个借口 readfile(),具体可自行百度。