自分で作成していないdatファイルが読めるか知りたいのですが。関数には構造体レコードが必要であることがわかっている限り、fread
このdatファイルを作成しなかったため、レコードにどのフィールドがあるかわかりません。
前もって感謝します。
それは完全に可能です。マニュアルfread
を読むと、データの読み取りを試みるメモリへのポインタが必要であり、読み取りに成功したバイト数が返されることがわかります。
必ずバイナリモードでファイルを開いてください。
例えば:
FILE * fp = fopen("somefile.dat", "rb");
char buf[10];
size_t n = fread(buf, 10, 1, fp);
if (n > 0)
{
/* we succeeded at reading n bytes,
* which are now in buf[i] for i in [0, n)
*/
}
実際のコードでは、通常、シリアル化形式で指定された個々の部分を読み取るか、ファイルコンテンツ全体を読み取りたい場合は、ループが発生します。
char buf[4096];
for (size_t n; (n = fread(buf, sizeof buf, 1, fp)) != 0; )
{
/* process buf[i] for i in [0, n). For example: */
for (size_t i = 0; i != n; ++i)
printf("0x02X ", (unsigned char)(buf[i]));
}
datファイルとは何ですか?はい、バイナリファイルを読み取ることができ、理解しているようです。
ただし、目標はファイルを読み取るだけでなく、ファイルを「解析」することであるため、データを探す場所を知るにはその構造に精通している必要があり、ファイルの構造に精通していないようです。