-2

自分で作成していないdatファイルが読めるか知りたいのですが。関数には構造体レコードが必要であることがわかっている限り、freadこのdatファイルを作成しなかったため、レコードにどのフィールドがあるかわかりません。

前もって感謝します。

4

2 に答える 2

3

それは完全に可能です。マニュアル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]));
}
于 2012-11-22T22:22:38.730 に答える
1

datファイルとは何ですか?はい、バイナリファイルを読み取ることができ、理解しているようです。

ただし、目標はファイルを読み取るだけでなく、ファイルを「解析」することであるため、データを探す場所を知るにはその構造に精通している必要があり、ファイルの構造に精通していないようです。

于 2012-11-22T22:20:46.723 に答える