ファイルをコピーするCのサンプルコード

その後、C言語の標準ライブラリに<stdio.h>ファイルと元ファイルのターゲットとするために、ファイルポインタは関数呼び出しのfgetc / FPUTCのか、関数fread / fwriteのバイトをコピーする元のファイルから目的のファイルを達成。

使用fgetc関数 / FPUTCコアコードのファイルをコピーする機能を

int型のval = 0 ;
しばらく((ヴァル=はfgetc(fpbr))!= EOF)
    FPUTC(ヴァル、FPBW)。

注:
1)に<stdio.h>ファイルヘッダに定義されたファイル(ファイルの終わり)、1の値のEOFマクロ示す終了;
2)関数のfgetc / FPUTC機能はファイルストリーム/ライトから読み込まれているが文字は、実際に使用されている文字は、int型のint型ではなく、char型。あなたはchar型を使用する場合は、不完全なファイルのコピーをもたらすことができます。

使用  にfread / fwriteの   コピーに機能することはコアのコードをファイル

サンプルコード

CHAR CH;
しばらく(関数fread(&CH、はsizeofchar型)、1、fpbr)!= 0 
    fwriteの(&CH、はsizeofCHAR)、1、FPBW)。

2つのサンプルコード

size_tのLEN = 0 チャーバッファー[BUFSIZ] = { ' \ 0 ' }。  // に<stdio.h>で定義されているBUFSIZマクロ
一方((LEN =のfread(緩衝液、はsizeofCHAR))>)、BUFSIZ、fpbr 0 
    fwriteの(バッファ、はsizeofチャー LEN)、FPBW)。

注:
。1)は<stdio.hの> 512の値を有するヘッダBUFSIZマクロで定義されている;
2)関数のfread / fwriteの関数は、ファイルストリームからのデータの読み出し/書き込みブロックでは、プロトタイプsize_t型の関数である関数fread / fwriteの読み出し及びタイプ符号なし整数の書き込みのための各素子サイズの寸法、size_t型(符号無し;(ボイド* ptrは、size_tのサイズ、size_tのCOUNT、FILE *ストリーム); PTRは、ポインタアレイ素子を読み書きするために使用されます整数型)、カウントが配列の要素の大きさは、各要素は、サイズバイトを占有し、ストリームファイルポインタをポイントするファイルです。

完全なコード

書式#include <stdio.hに> 
する#include <stdlib.h>に含ま   // 終了()

ボイド copy_with_fgetc(CONST  CHAR SRC []、CONST  CHAR DST [])
{
    FILE * fpbr、* FPBW。

    // オープン・ソース・ファイルにしてみ 
    fpbr =のfopen(SRC、" RB " )。
    もし(fpbr == NULL){
        printf(" オープンソースファイル%sのエラー\ nは!" 、SRC);
        出口(1 )。
    }

    // 開いている先のファイルにしてみ 
    FPBW =のfopen(DST、" WB " )。
    もし(fpbr == NULL){
        printf(" 開先ファイル%sのエラー\ nは!" 、DST);
        出口(1 )。
    }

    // とfgetcコピーファイル()とFPUTC()
    int型のval = 0 ;
    しばらく((ヴァル=はfgetc(fpbr))!= EOF)
        FPUTC(ヴァル、FPBW)。

    printf(" コピーファイルに成功\ nは!" );

    FCLOSE(fpbr)。
    FCLOSE(FPBW)。
}

ボイド copy_with_fread(CONST  CHAR SRC []、CONST  CHAR DST [])
{
    FILE * fpbr、* FPBW。

    // オープン・ソース・ファイルにしてみ 
    fpbr =のfopen(SRC、" RB " )。
    もし(fpbr == NULL){
        printf(" オープンソースファイル%sのエラー\ nは!" 、SRC);
        出口(1 )。
    }

    // 開いている先のファイルにしてみ 
    FPBW =のfopen(DST、" WB " )。
    もし(fpbr == NULL){
        printf(" 開先ファイル%sのエラー\ nは!" 、DST);
        出口(1 )。
    }

    // 関数fread()とfwriteの()でコピーファイル
    のchar chの。
    しばらく(関数fread(&CH、はsizeofchar型)、1、fpbr)!= 0 
        fwriteの(&CH、はsizeofCHAR)、1 、FPBW)。

    printf(" コピーファイルに成功\ nは!" );

    FCLOSE(fpbr)。
    FCLOSE(FPBW)。
}

ボイド copy_with_fread2(CONST  CHAR SRC []、CONST  CHAR DST [])
{
    FILE * fpbr、* FPBW。

    // オープン・ソース・ファイルにしてみ 
    fpbr =のfopen(SRC、" RB " )。
    もし(fpbr == NULL){
        printf(" オープンソースファイル%sのエラー\ nは!" 、SRC);
        出口(1 )。
    }

    // 開いている先のファイルにしてみ 
    FPBW =のfopen(DST、" WB " )。
    もし(fpbr == NULL){
        printf(" 開先ファイル%sのエラー\ nは!" 、DST);
        出口(1 )。
    }

    // バッファのfread()とfwriteの()とコピーファイル 
    size_tのLEN = 0 チャーバッファー[BUFSIZ] = { ' \ 0 ' }。  // に<stdio.h>で定義されているBUFSIZマクロ
    一方((LEN =のfread(緩衝液、はsizeofCHAR))>)、BUFSIZ、fpbr 0 
        fwriteの(バッファ、はsizeofチャーLEN)、FPBW)。

    printf(" コピーファイルに成功\ nは!" );

    FCLOSE(fpbr)。
    FCLOSE(FPBW)。
}

int型のmain()
{
    CONST  チャー SRC [] = " HelloWorld.exe " CONST  チャー DST1 [] = " E:/HelloWorld1.exe " CONST  チャー DST2 [] = " E:\\ HelloWorld2.exe " CONST  チャー dst3 [] = " E:\\ HelloWorld3.exe " 

    copy_with_fgetc(SRC、DST1)。
    copy_with_fread(SRC、DST2)。
    copy_with_fread2(SRC、dst3)。

    リターン 0 ;
}
コードの表示

 注:Windowsシステムでは、ディレクトリ構造を使用して、スラッシュ「/」の代わりにバックスラッシュ「\」。あなたはバックスラッシュを使用する必要がある場合は、エスケープバックスラッシュを追加する必要があります。

 

おすすめ

転載: www.cnblogs.com/klchang/p/12180817.html