私はバイナリファイルの内容を毎回nバイトのグループとして読み込み、それらを文字バッファに置き、バッファ上でいくつかの操作を実行しようとしています。次の反復のために、私はファイルから次のnバイトを読み込み、ファイルの終わりまでバッファに入れなければなりません。通常のテキストファイルでgetc(fp)を使って同じことができます。しかしバイナリファイルでは、ファイルからの内容全体が読み込まれる前にgetc()がEOFで遭遇しています。私はどのようにCでバイナリファイルでそれを達成できますか?Cでのバイナリファイルの読み取り操作?
0
A
答えて
0
あなたは関数freadを使用して読むことができます:
まず、fopen
を読み取るためのバイナリファイルを開く、使用モード"rb"
:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
は、考慮すべきfread
3
2つのことを参照してください。これはバイナリモードでファイルを開くため、特定の文字に対して特別な処理をしません。 Linuxではこれは問題ではありませんが、Windowsではそうです。
第2に、fgetc
は、キャストされた文字をint
に戻すことに注意してください。これにより、EOF
を確認することができます。結果がEOF
ではない場合、文字は0から255の値になります(もちろんCHAR_BIT
は8です)。
1
バイナリファイルでは、ファイルから読み込むプロセスは、通常、関数fread
によって行われます。ファイルの最後までプロセスを反復したい場合は、このプロセスを繰り返します。あなたはwhile
while(!feof(fp)) // still not read to the end of file yet
if (fread(buffer, sizeof(...),1,fp)==1) //put single variable to the array[]
....
`
を使用することができます。
関連する問題
- 1. バイナリファイルのCでの操作
- 2. バイナリファイルの読み取り
- 3. C#:バイナリファイルとリストの書き込みと読み取り
- 4. ファイルからの読み取り時のC#テストボックスの操作
- 5. MIPSのバイナリファイルからの読み取り
- 6. バイナリファイルの読み取りとbase64のエンコード
- 7. C/C++でのバイナリファイルの読み書き
- 8. Cバイナリファイルの読み取りバッファのデステージリングの場所の相違
- 9. NodeJS - 画像バイナリファイルの読み取り
- 10. バイナリファイルの追加と読み取り
- 11. C:バイナリファイルからバイトを読み取る
- 12. InputStream Non Blocking読み取り操作
- 13. リモートファイル読み取りと操作
- 14. 単純なC++バイナリファイルの読み込み
- 15. C読み込むバイナリファイル
- 16. SAPUI5:オラタの読み取り操作でのマルチレベルフィルタ
- 17. バイナリファイルへの書き込みと読み取り時の問題
- 18. テキストファイルからの読み取りとバイナリファイルへの書き込み
- 19. バイナリファイルの読み取り/書き込みのオーバーフロー
- 20. java/C++の読み込みバイナリファイルが異なります
- 21. 別のコードセットで作成されたバイナリファイルを読み込むC++
- 22. javaバイナリファイル操作
- 23. NSUserDefaultsの読み取りアクセスは「高価な」操作ですか?
- 24. 読み取り操作でスレッドセーフなDOMを作成する
- 25. チャンクのバイナリファイルを読み込むC#
- 26. ステートフルサービスの信頼性の高いコレクションの読み取り操作
- 27. Android:バイナリファイルのエラーを読み取る
- 28. Cでメモリマッピングを使用してバイナリファイルを読み取る
- 29. 挿入操作/更新操作は、arangodbでの読み取り操作をロックします
- 30. バイナリファイルを読み込むメソッドの作成
CまたはC++について知りたいですか?不適切なタグを削除してください。 –
Cでは、fread()関数 –
を見てみると、Cでfread/fwriteを試してみることができます。C++にはifstreamがあり、第2パラメータios :: binaryがあります。 – slavanap