ファイルがテキスト(ASCII)かバイナリかをチェックするCコードを書く必要があります
誰か助けてくれませんか?ありがとう
一般的な方法は、最初の数百バイトを読み取り、ASCII NUL を探すことです。
ファイルに NUL が含まれている場合、それは間違いなくバイナリ ファイルです。ほとんどのバイナリ ファイルには NUL バイトが含まれていますが、テキスト ファイルには NUL バイトを含めるべきではありません。
#include <string.h>
bool is_binary(const void *data, size_t len)
{
return memchr(data, '\0', len) != NULL;
}
これはヒューリスティックであることに注意してください。言い換えれば、それは時々間違っているでしょう。
すべての文字を読み取り、それらがすべて ASCII、つまり 0 から 127 までのコードを含むかどうかを確認します。
一部のツールは、ファイルにコード 0 のバイトがあるかどうかを確認するだけで、ファイルがテキスト ファイルかバイナリ ファイルかを判断します。
明らかに、これらの方法の両方を適用すると、一部のファイルで異なる結果が得られるため、探しているものを正確に定義する必要があります。