私はこのコードで目のセット(またはそれ以上)を使うことができました。私は、ファイルストリーム(f1)から配列/バッファ(ファイルはテキストファイル、配列はchar型)のバイト量を読み込みようとしています。私が "buffer - 1"の大きさで読み込んだ場合、配列を "realloc"し、読み終わったところから読み込みを続けます。基本的に私は、不明なサイズのファイルのバッファを動的に拡張しようとしています。私が不思議なこと:Cでmallocを使ってテキストファイルを配列に読み込む
- 私はこれを間違って実装していますか?
- 「realloc」のようなものでエラー状態を確認する方法 コードと同じですか?
- 「組み込み関数reallocの暗黙の宣言」についてコンパイルすると、多くの警告が出ます(read、malloc、strlenなどの使用についての警告が表示されています)。
- "read()" getが2度目(3度目、4度目など)呼び出されるときに、毎回ストリームの先頭から読み込まれますか?それは私の問題かもしれませんが、最初の "buff_size 。「シャア
は、ここに抜粋です:
//read_buffer is of size buff_size
n_read = read(f1, read_buffer, buff_size - 1);
read_count = n_read;
int new_size = buff_size;
while (read_count == (buff_size - 1))
{
new_size *= 2;
read_buffer = realloc(read_buffer, new_size);
n_read = read(f1, read_buffer[read_count], buff_size - 1);
read_count += n_read;
}
私はダイナムのこのタイプを行う方法を学んでいたよう私は誰かがこの種のことでベストプラクティスについての簡単な事実を述べることができるかどうか疑問に思っています。私はこれが専門家の世界でTON(サイズが不明なファイルを読む)が来ると仮定していますか?御時間ありがとうございます。 ALSO:あなたが物事を行う良い方法(つまり、この種の問題のテクニック)を見つけたら、あなたがそれをどうやって記憶しているのか、それとも将来的に参照するために保存しているのでしょうか?
あなたはread()を2回呼び出しています。繰り返さないでください。 – wildplasser
あなたはread()を2回呼び出しています。繰り返さないでください –