C言語でファイルをどのように読み込むか教えてください
C言語でファイルをオープンして読み込むには`fopen`, `fread`などの標準ライブラリ関数を使用する
まず、fopen 関数を使用してファイルを開き、後続のファイル読み取り操作的参数となる FILE 構造体を指すポインタを返します。fopen 関数のプロトタイプは次のとおりです。
FILE *fopen(const char *filename, const char *mode);
ファイル名は開くファイルの名前で相対パスまたは絶対パス、modeはファイルを開くモードでよく使われるモードは次のとおりです。
- 「r」: ファイルをよみだすモードでファイルをオープンする
- 「w」:書き込みモードでファイルを開く。ファイルがすでに存在している場合はファイルを切断し、ファイルが存在しない場合はファイルを作成する
- 「a」ファイル追記モードでファイルを開く。ファイルが存在しない場合は作成する。
- 「rb」:ファイルをバイナリモードで読み取り専用で開く
- ファイルをバイナリ書き込みモードで開く
- 「ab」: 2進数追加書き込みモードでファイルを開く
ファイルを開いた後、fread 関数を使用してファイルの内容を読み取ることができます。fread 関数のプロトタイプは次のようになります。
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
ptr:読み込んだデータを格納するバッファを指すポインタ、size:要素ごとのサイズ(バイト単位)、count:読み込む要素の数、stream:FILE構造体を指すポインタ
ファイルの内容を読み込む方法を示すサンプルコードを以下に示します。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r"); // 打开example.txt文件,以只读方式打开
if (file == NULL) {
printf("无法打开文件\n");
return 0;
}
char buffer[100]; // 设置一个缓冲区,用于存储读取的数据
size_t count = fread(buffer, sizeof(char), sizeof(buffer), file); // 读取文件内容到缓冲区
for (int i = 0; i < count; i++) {
printf("%c", buffer[i]); // 输出缓冲区中的内容
}
fclose(file); // 关闭文件
return 0;
}
上記のコードでは、最初にファイルを開くためにfopen関数を使用しています。ファイルのオープンが成功すれば、fread関数を使用してファイルの中身をバッファbufferに読み込み、ループによってバッファの中身をアウトプットしています。最後に、fclose関数でファイルをクローズしています。
ファイルを読み込む際には、バッファサイズが十分な大きさであることを確認してオーバーフローしないように注意してください。さらに、ファイル操作の完了後にはファイルを閉じてリソースを解放する必要があります。