>> C言語関数一覧トップに戻る
今回はC言語のfread関数の使い方について説明します。
fread関数はファイルから指定バイト数のデータを指定した数読み込み、バッファに格納します。
■書式
#include <stdio.h>
size_t fread(void *buf, size_t size, size_t n, FILE *fp);
第一引数には格納先のバッファ
第二引数は読み込むデータ1つのバイト数
第三引数は読み込むデータの個数
第四引数はファイルポインタ
を指定します。
ファイルオープン時はファイルポインタはファイルの先頭にありますが、
読み込むとそのバイト数分だけファイルポインタが後ろにずれます。
この仕組みにより順番にファイルを読み込んでいくことが可能になっているわけです。
戻り値は読み込んだデータの個数を返します。
■サンプルコード
読み込んだ文字は→123ai
aiueo.txtには「123aiueo」という文字列が書き込まれています。
freadで1バイトを5個読み込む、つまり5バイト分読み込んでいます。
それを表示しているので「123ai」と表示されるわけです。
注意してほしいのはfreadはそのまま指定バイト数分読み込むだけで、
末尾にヌル文字を付加してくれません。
なので文字列等を扱うときは、手動で末尾にヌル文字を付加する必要があります。
>> 【C言語 fwrite 使い方】に進む
>> C言語関数一覧トップに戻る
C言語 fread 使い方
fread関数はファイルから指定バイト数のデータを指定した数読み込み、バッファに格納します。
■書式
#include <stdio.h>
size_t fread(void *buf, size_t size, size_t n, FILE *fp);
第一引数には格納先のバッファ
第二引数は読み込むデータ1つのバイト数
第三引数は読み込むデータの個数
第四引数はファイルポインタ
を指定します。
ファイルオープン時はファイルポインタはファイルの先頭にありますが、
読み込むとそのバイト数分だけファイルポインタが後ろにずれます。
この仕組みにより順番にファイルを読み込んでいくことが可能になっているわけです。
戻り値は読み込んだデータの個数を返します。
■サンプルコード
#include <stdio.h> int main(void) { char ch[50]; int num; FILE *fp; fp = fopen("aiueo.txt","r"); //1バイトを5個読み込み(合計5バイト) fread(ch,1,5,fp); //文字列の末尾にヌル文字(\0)はつけられないので手動で追加。 ch[5] = '\0'; //表示 printf("読み込んだ文字は→%s\n",ch); fclose(fp); return 0; }■実行結果
読み込んだ文字は→123ai
aiueo.txtには「123aiueo」という文字列が書き込まれています。
freadで1バイトを5個読み込む、つまり5バイト分読み込んでいます。
それを表示しているので「123ai」と表示されるわけです。
注意してほしいのはfreadはそのまま指定バイト数分読み込むだけで、
末尾にヌル文字を付加してくれません。
なので文字列等を扱うときは、手動で末尾にヌル文字を付加する必要があります。
>> 【C言語 fwrite 使い方】に進む
>> C言語関数一覧トップに戻る