c言語fwrite関数のまとめ
ヘッダファイル:#include
関数プロトタイプ:size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream);
パラメータ:
buffer:ポインタで、fwriteにとって、データを取得するアドレスです.
size:コンテンツを書き込む各データ項目のバイト数、単位はバイトです.
count:count個のデータ項目を書き込むには、各データ項目sizeバイト;
stream:ターゲットファイルポインタ.
戻り値:
実際に書き込まれたデータ項目数countを返します.
説明:
この関数はストリームをファイルのどこに書きますか?これはファイルの開くモードと関係があり、w+であればfile pointerが指すアドレスから書き始め、その後の内容を置き換え、ファイルの長さは変わらず、streamの位置はcount個数を移動することができる.a+の場合、ファイルの末尾から追加され、ファイル長が大きくなります.
fseekはこの関数に役立ちますが、fwrite関数はユーザー空間バッファに書き込まれ、ファイルに同期していないため、変更後はメモリをファイルに同期し、fflush(FILE*fp)関数に同期することができます.
プログラムの例:
関数プロトタイプ:size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream);
パラメータ:
buffer:ポインタで、fwriteにとって、データを取得するアドレスです.
size:コンテンツを書き込む各データ項目のバイト数、単位はバイトです.
count:count個のデータ項目を書き込むには、各データ項目sizeバイト;
stream:ターゲットファイルポインタ.
戻り値:
実際に書き込まれたデータ項目数countを返します.
説明:
この関数はストリームをファイルのどこに書きますか?これはファイルの開くモードと関係があり、w+であればfile pointerが指すアドレスから書き始め、その後の内容を置き換え、ファイルの長さは変わらず、streamの位置はcount個数を移動することができる.a+の場合、ファイルの末尾から追加され、ファイル長が大きくなります.
fseekはこの関数に役立ちますが、fwrite関数はユーザー空間バッファに書き込まれ、ファイルに同期していないため、変更後はメモリをファイルに同期し、fflush(FILE*fp)関数に同期することができます.
プログラムの例:
// fwrite fread fseek
#include
int main ()
{
FILE *fp;
char msg[] = "file content";
char buf[20];
fp = fopen("d:\\a\\a.txt","w+");
if (NULL == fp)
{
printf("The file doesn't exist!
");
return -1;
}
fwrite(msg,strlen(msg),1,fp);//
fseek(fp,0,SEEK_SET);//
fread(buf,strlen(msg),1,fp);//
buf[strlen(msg)] = '\0';//
printf("buf = %s
",buf);
printf("strlen(buf) = %d
",strlen(buf));
return 0;
}