6

ファイルがテキスト(ASCII)かバイナリかをチェックするCコードを書く必要があります

誰か助けてくれませんか?ありがとう

4

3 に答える 3

5

一般的な方法は、最初の数百バイトを読み取り、ASCII NUL を探すことです。

ファイルに NUL が含まれている場合、それは間違いなくバイナリ ファイルです。ほとんどのバイナリ ファイルには NUL バイトが含まれていますが、テキスト ファイルには NUL バイトを含めるべきではありません。

#include <string.h>
bool is_binary(const void *data, size_t len)
{
    return memchr(data, '\0', len) != NULL;
}

これはヒューリスティックであることに注意してください。言い換えれば、それは時々間違っているでしょう。

于 2013-01-31T03:42:32.540 に答える
3

すべての文字を読み取り、それらがすべて ASCII、つまり 0 から 127 までのコードを含むかどうかを確認します。

一部のツールは、ファイルにコード 0 のバイトがあるかどうかを確認するだけで、ファイルがテキスト ファイルかバイナリ ファイルかを判断します。

明らかに、これらの方法の両方を適用すると、一部のファイルで異なる結果が得られるため、探しているものを正確に定義する必要があります。

于 2013-01-31T03:41:39.103 に答える