C/C++ 文件復制


C語言版:
#include <bits/stdc++.h>
using namespace std;

int main(){
    //文本文件復制
    FILE* f1=fopen("input.txt","r");
    FILE* f2=fopen("out.txt","w");
    if(!f1||!f2) {
        printf("-1\n");
        return -1;
    }
    char buf[5];
    while(fgets(buf,sizeof(buf),f1)!=NULL){
        printf("%s\n",buf);
        fputs(buf,f2);
    }
    fclose(f1);
    fclose(f2);
    //二進制文件復制
    FILE* f1=fopen("input.txt","rb");
    FILE* f2=fopen("out.txt","wb");
    if(!f1||!f2){
        printf("-1\n");
        return -1;
    }
    char buf[1024];
    int len=sizeof(buf);
    while(!feof(f1)){
        memset(buf,0,sizeof(buf));
        if(fread(buf,sizeof(buf),1,f1)!=1){
            char *p=&buf[len-1];
            while((*p)==0){
                p--;
                len--;
            }
        }
        fwrite(buf,len,1,f2);
    }
    fclose(f1);
    fclose(f2);
    return 0;
}

C++版:

#include <bits/stdc++.h>
using namespace std;
const int maxn=(1<<10);
int main(){
    //二進制
    ifstream fin("1.jpg",ios::binary);     //acsii碼 讀為ios::in
    ofstream fout("2.jpg",ios::binary);    //………………… …………Ios::out
    while(!fin.eof()){
        char buf[maxn]="";
        int len=sizeof(buf);
        fin.read(buf,sizeof(buf));
        if(fin.peek()==-1){
            char *p=&buf[len-1];
            while((*p)==0){
                len--;
                p--;
            }
        }
        fout.write(buf,len);
    }
    fin.close();
    fout.flush();
    fout.close();
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM