User manual - DT-900 高速ファイルサーチライブラリver.1.00(2006年9月29日)

Hash Library User’s Manual 16
/*--------------------- HASH WRITE START ----------------------------------*/
fpData = fopen("a:\\sample.dat","r+");
fpIndex = fopen("b:\\sample.idx","r");
iDisplayMessage ("HASH write started : ");
pszBuff = malloc((size_t)(40));
if (pszBuff == NULL) return -1;
for (lCount = 0; lCount < 10; lCount++ ) {
memset (pszBuff, 0, (size_t)40);
sprintf (pszBuff, "%08lX", lCount);
iI = iHashWrite (pszBuff, fpData, fpIndex, "xy");
if (iI != 0)
break;
}
if (iI != 0) iDisplayMessage ("** ERROR: HashWrite **");
free (pszBuff);
iDisplayMessage ("HASH write over\n");
fclose (fpData);
fclose (fpIndex);
/*--------------------- HASH WRITE END ----------------------------------*/
iHashWrite()
iHashWrite()iHashWrite()
iHashWrite() 関数は、SAMPLE.DAT中のデータ ab
abab
ab xy
xyxy
xy に書き換えます。
SAMPLE.DATは、以下のように書き換えられます。
00000000xy
00000001xy
00000002xy
00000003xy
00000004xy
00000005xy
00000006xy
00000007xy
00000008xy
00000009xy
このとき、インデックスファイル(SAMPLE.IDX) の内容は、変化しません。
00000030 indicates W = 48
indicates W = 48indicates W = 48
indicates W = 48 }
00000028 indicates V = 40
indicates V = 40indicates V = 40
indicates V = 40 } ヘッダ
0000000A indicates L = 10
indicates L = 10indicates L = 10
indicates L = 10 }
00000008 indicates l = 8
indicates l = 8indicates l = 8
indicates l = 8 }
0000000A indicates N = 10
indicates N = 10indicates N = 10
indicates N = 10 }
00000001 ここからインデックスのエントリが開始されます。
00000000
00000005
00000000