0
    fseek(fp,pinakas[256]*y,SEEK_SET);
    fread(pinakas,sizeof (pinakas[256]),1,fp);
    for(p=0 ; p<256 ; p++)
            printf(" %d",pinakas[p]);

ここで何が問題なのですか?同じ数値を出力するたびに... y は値を変更する int です。fpでバイナリファイルを開きます...そしてこれを取ります:

-120 36 -83 -5 0 -64 121 -73 0 -64 121 -73 0 -64 121 -73 0 -64 121 -73 0 -64 121 -73 0 -64 121 -73 0 -64 121 -73 0 64 122 -73 0 0 0 0 0 0 0 0 0 0 0 0 8 16 43 9 4 0 0 0 0 0 0 0 0 0 0 0 8 18 43 9 0 0 0 0 0 0 0 0 0 0 0 20 18 43 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 122 -107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

論理アドレスを取得し、それを物理アドレスに変換します。次に、バイナリ ファイルから 256 バイトのページを取得し、物理メモリに格納する必要があります。ここの「y」はページ番号です。したがって、fseek を使用してバイナリ ファイル内の特定のページと fread を使用して読み取り、pinakas[256] に保存します。

4

1 に答える 1

0

あなたが何をしようとしているのかはあまり明確ではありませんが、とにかくこれは私の推測です.ファイルからデータのブロックを読み込んでおり、それぞれの長さは256バイトです:

char pinakas[256]; //this is the memory buffer for one page

int y = ...; //this is the page number
int p;

fseek(fp, 256*y, SEEK_SET);
fread(pinakas, 256, 1, fp);
for (p = 0; p < 256; p++)
    printf(" %d", pinakas[p]);

コード内の 1 つのエラーは、sizeof: sizeof(pinakas)is 256(配列のサイズ) の使用ですがsizeof(pinakas[256])、またはその他の数値は just 1(配列の任意の要素のサイズ) です。

于 2013-09-17T22:22:43.413 に答える