その後、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、はsizeof(char型)、1、fpbr)!= 0 )
fwriteの(&CH、はsizeof(CHAR)、1、FPBW)。
2つのサンプルコード
size_tのLEN = 0 。
チャーバッファー[BUFSIZ] = { ' \ 0 ' }。 // に<stdio.h>で定義されているBUFSIZマクロ
一方((LEN =のfread(緩衝液、はsizeof(CHAR))>)、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、はsizeof(char型)、1、fpbr)!= 0 ) fwriteの(&CH、はsizeof(CHAR)、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(緩衝液、はsizeof(CHAR))>)、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システムでは、ディレクトリ構造を使用して、スラッシュ「/」の代わりにバックスラッシュ「\」。あなたはバックスラッシュを使用する必要がある場合は、エスケープバックスラッシュを追加する必要があります。