- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UNIX C メモリ領域)
UNIX C メモリ領域
このQ&Aのポイント
- メモリ領域に展開されるデータが0番地ではなく1番地に展開されます。
- マスタファイルの重複している旧カードの件数を取得し、それぞれの旧カードに該当するレコードを取得する処理が行われます。
- GetCountGroup関数で重複している旧カードの件数を取得し、GetGroupIcids関数で旧カードを展開し、GetRecordIcids関数でレコードを取得します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
precord[0]からデータを入れるつもりでソースを書いたのなら、異常動作です。 どこかで書き方を間違っています。 indexというのは[1]のことです。 1番目のデータ→precord[0]→index=0, count=1 2番目のデータ→precord[1]→index=1, count=2 3番目のデータ→precord[2]→index=2, count=3 という関係になりますよね。 No.1で言いたかったのは、関数のどこかのループ処理で precord[0]からではなく、precord[1]から始めている箇所があるのではないかということです。 これ以上のことは、関数の中身を見ないとわかりません。 自分で調べるのでしたら、デバッガでステップ実行するなり、 printf関数で変数の値を表示するようにして どこまで正常に動作しているかを確認してみてください。
その他の回答 (1)
- yukimican
- ベストアンサー率70% (112/159)
回答No.1
関数の詳細がわからないと何とも言えませんが、 「0番地からでなく、1番地に」という現象から推測すると どこかでcountとindexを混同している可能性があります。 countは1から始まりますが、indexは0からです(count-1)。 ソースコードのforループや変数の初期化の辺りを良く見直してみてください。
質問者
補足
precord[1]からデータがはいることは、正常な動作になるということでしょうか?。INDEXというのは、[1]のことですよね。
補足
ありがとうございます。