こんにちは、私はこの関数を使用して、データ ファイルにいくつのレコードがあるかを教えてくれます。ただし、実行するたびに偶数レコードのみを読み取ります
例: 0 件のレコードがある場合、0 を出力します
1レコードで0を出力します
2つのレコードで1を出力
3で1を出力
4 で 2 を出力します
(ところで、顧客および製品データベースプロジェクトの場合、顧客は構造体であり、filepはこのコードの上で定義されているファイルcustomerfileへのポインターです)私はEclipseで実行しており、それが違いを生む場合にのみgnu89/90の方言を使用できます
int CusFileNumber(void)
{
customer tempcus;
filep = fopen(customersFile, "r");
fseek (filep,0,SEEK_SET);
int counter =0;
while(!feof(filep))
{
fread(&tempcus,sizeof(customer),1,filep);
printf ("%d",counter);
counter ++;
}
fclose(filep);
return (counter-1);
}
だから私はfeofを取り除くためにコードを更新しました
このように見えます
int CusFileNumber(void)
{
customer tempcus;
filep = fopen(customersFile, "r");
fseek (filep,0,SEEK_SET);
int counter =0;
while(fread(&tempcus, sizeof(customer), 1, filep) == 1)
{
printf ("%d",counter);
counter ++;
}
fclose(filep);
return (counter);
}
しかし、今回はまだ同じ問題が発生しており、偶数を数えていません
つまり、奇数ごとにカウンターが1ずつ増加しますが、ファイルに偶数のレコードがある場合は同じままです(ところで.datファイル)