大家好我有这个功能告诉我数据文件中有多少条记录。 但无论何时我运行它只读取偶数记录
例如:如果我有0条记录则输出0
有1条记录,输出0
有2条记录,它输出1
用3输出1
用4输出2
(对于客户和产品数据库项目而言 customer是一个struct,filep是指向文件customerfile的指针,该文件在此代码上面定义) 我在日食上运行,只能使用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文件btw)