0

部品と部品番号のリストを含むファイルがあります。私がする必要があるのは、ファイル ポインターと整数で指定された場所にパーツの名前を表示することです。のようなもの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

最初の数字は商品番号、2 番目の数字は在庫数であるため、すべて同じ長さではありません。ただし、それらは ofp であるバイナリ ファイルに変換されます。

4

1 に答える 1

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);

これはまだコンパイルされませんが、アイデアは得られるはずです。正しい printf() を実際に表示できるようにするには、typedef の部分を確認する必要があります。

于 2013-04-24T23:54:21.493 に答える