-2
while(!feof(fp)) 
{
    fscanf(fp,"%d %s %d %d",&res[i].id,res[i].title,&res[i].price,&res[i].qty);
    i++;
}
while(j<i)
{
    printf("\nID:|%d|\tNAME:|%s|\tPRICE:|%d|\tQTY:|%d|",res[j].id,res[j].title,res[j].price,res[j].qty);
    j++;
}

ファイルからデータを収集しているこのコードがあります。ユーザーからの入力を取得するかどうかを知りたいres[id]のですが、その特定のIDの量を減らしたいのですが、どうすればいいですか?

4

1 に答える 1

0

ファイルがバイナリ形式であれば、やりたいことを簡単に実行できます。

テキスト形式とバイナリ形式の違いは何ですか? ファイルがバイナリ形式で書き込まれている場合、32 ビット整数は、ファイル内で連続する 32 ビットとして表されます。テキスト形式では、数値はたとえば数字のシーケンスとして表されます32

では、その違いの大きな問題は何ですか?32 を 1243 に置き換えても、バイナリ形式では数値は同じ 32 ビットのままなので、他に何も移動する必要はありません。変更するのはこれらの 4 バイトだけです。2 番目のケースでは、さらに 2 桁を追加すると、ファイルの後続のすべての内容が 2 バイトシフトされます。

必要に応じてすべてをシフトするには、ファイルの現在の内容を読み取り、値を変更してから内容を書き戻す必要があります。あなたが行っている変更に続くすべての内容を意味します。

于 2012-12-22T17:57:18.673 に答える