プロが教えるわが家の防犯対策術!

マスタファイルを読み込み、メモリ領域に展開したときに、
0番地からでなく、1番地にデータが展開されます。
よろしくお願いします。

マスタファイル
識別 旧カード       新カードID   日付
01 1111111111000000 1111111112000000 07/02/10
01 1111111111000000 1111111113000000 07/02/10

処理内容
1.マスタを読み、重複している旧カードの件数を取得
nCountGroup=1
2.1.の件数分の領域に旧カードを展開
pGroupIcids[0]=1111111111000000
3.2.の旧カードに該当するレコードを取得
  precord[0]= NULL
  precord[1]=01 1111111111000000 1111111112000000 07/2/10
precord[2]=01 1111111111000000 1111111113000000 07/2/10

/* 件数取得 */
nCountGroup = GetCountGroup();
/* カード取得 */
nSts = GetGroupIcids(pGroupIcids, nSize, nCountGroup)
/* レコード取得 */
nSts = GetRecordIcids(precordIcids, pGroupIcids[nIndex].Icidcorp, nSize, nCountRecord);

A 回答 (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関数で変数の値を表示するようにして
どこまで正常に動作しているかを確認してみてください。

この回答への補足

ありがとうございます。

補足日時:2007/03/20 11:28
    • good
    • 0

関数の詳細がわからないと何とも言えませんが、


「0番地からでなく、1番地に」という現象から推測すると
どこかでcountとindexを混同している可能性があります。

countは1から始まりますが、indexは0からです(count-1)。
ソースコードのforループや変数の初期化の辺りを良く見直してみてください。

この回答への補足

precord[1]からデータがはいることは、正常な動作になるということでしょうか?。INDEXというのは、[1]のことですよね。

補足日時:2007/01/24 15:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!