fseek和fread在包含部件列表的文件上

时间:2013-04-24 22:03:59

标签: c file pointers fread fseek

我有一个包含零件和零件号列表的文件。我需要做的是在由文件指针和整数给出的位置显示部件的名称。像sizeof(part) * n这样的东西,然后显示该位置的零件信息。

我正在尝试fseek和fread,但它似乎没有正常工作。

FILE * ofp;
ofp = fopen("file.bak", "r");

char p[sizeof(part)];

fseek(ofp,sizeof(part) * 4,SEEK_SET);
fread(p, sizeof(part), 1, ofp);
printf("%s", p);

它打印列表中的第一部分,它应该打印第4部分。

该部分是一个包含3个字段的结构。它们的形式如下:

1 item1 2
4 item2 80

其中第一个数字是项目编号,第二个是库存数字, 所以它们的长度不一样。然而,它们被转换为二进制文件,即ofp。

1 个答案:

答案 0 :(得分:0)

以下是我在想的尝试:

FILE * ofp;
ofp = fopen("file.bak", "r");
part seek_part;

memset( &seek_part, 0, sizeof(part) );
fseek(ofp,sizeof(part) * 4,SEEK_SET);
fread(&seek_part, sizeof(part), 1, ofp);
printf("%s", seek_part.name);

这仍然无法编译,但你应该明白。我们需要看到部分typedef才能真正显示正确的printf()。