1

ファイルから一度に 1 バイトずつ読み取ろうとしています。

size_t result_new = 1;  
char buf6[1];  
if( (result_new = fread(buf6, 1, 1, pFile)) != 1)  
            {  
                printf("result_new = %d\n", result_new);
                printf("Error reading file\n");
                exit(1);
            }

result_new0になり、エラーを出力しています。何が間違っている可能性があります。きっとpFile大丈夫です。

ありがとう

4

4 に答える 4

2

ドキュメントによると:

fread() と fwrite() は、正常に読み書きされたアイテムの数を返します (つまり、文字数ではありません)。エラーが発生した場合、またはファイルの終わりに達した場合、戻り値は短い項目数 (またはゼロ) です。

それでは、あなたの質問に答えるエラー コードをチェックしてみませんか? perrorたとえば、 を使用できます。

于 2011-01-28T16:46:11.087 に答える
1

1 バイトだけが必要な場合はgetcfread. インターフェイスはよりシンプルになり、はるかに高速になる可能性があります。

于 2011-01-28T17:24:00.497 に答える
0

http://www.cplusplus.com/reference/clibrary/cstdio/fread/には、ファイルからの読み取りの例があります。これは C++ ページですが、C でも動作するはずです

于 2011-01-28T16:50:29.067 に答える
0

ファイルを通常のテキスト書き込み用に開くと、場合によっては奇妙なエラーが発生する可能性があることに注意freadしてください。fwriteバイナリ用にファイルを開くと、この潜在的な問題が解消されます。これは主に「改行」によるもので、何らかの理由でバイナリ ファイルとテキスト ファイルの読み取りと書き込みが異なるようです。

于 2011-01-29T01:22:29.633 に答える