fseek / fread的问题

时间:2013-09-17 17:07:37

标签: c fread fseek

    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 0 0 0 0 8 16 43 9 4 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我拿一个逻辑地址然后把它变成物理。然后我必须从二进制文件中取一个256字节的页面并存储到它的物理内存中。&#34; y&#34;这里是页码。所以用fseek我试着找到二进制文件中的特定页面,用fread读取它并将其存储到pinakas [256]。

1 个答案:

答案 0 :(得分: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]);

代码中的一个错误是使用sizeofsizeof(pinakas)256(数组的大小),但sizeof(pinakas[256])或任何其他数字只是1(数组中任何元素的大小)。