Does fread
have a limit for the number of bytes it can read at once?
Or I can read any size I would like to charge in to my pointer?
For example, Can I read file of 50MB once using fread to charge it into char pointer?
6035 次
2 に答える
6
理論的には、はい、最大size_t
( unsigned int
32 ビット システムでは約 4GB) までの任意のバイト数を読み取ることができます。ただし、バッファは連続したブロックに割り当てる必要があるため、可能性は低いです一度に大きなファイルを読み込むことは実行可能でも推奨されません (また、非常に大きなファイルの場合、ファイルを保持するのに十分な大きさのメモリ バッファーを作成できない可能性があります)。通常、バッファーは小さくなり、ループします。チャンクでメモリにロードするファイル。
于 2013-09-18T18:48:11.580 に答える
2
実際にfread()
は、50MB のファイルを丸呑みしても問題ありません。これは、現代の基準では実際には「大きなファイル」ではありません。fread()
読み込まれたアイテムの数を返し、ファイルの終わり (ファイル内にあるよりも多くのアイテムを要求した場合) またはエラーの場合にのみ、短いアイテム数を返すことが保証されます。返された項目数が期待どおりであることを確認し、それが短い場合は、 と を使用feof()
しferror()
て EOF とエラーを区別する必要があります。
于 2013-09-18T19:52:05.773 に答える