我从文本文档中扫描以下值到各种数组中:
0001:Satriani:Joe:6:38.0
0002:Vai:Steve:1:44.5
0003:Morse:Steve:10:50.0
0004:Van Halen:Eddie:3:25.75
0005:Petrucci:John:8:42.25
0006:Beck:Jeff:3:62.0
我使用以下while循环执行此操作:
while (fscanf(employeesTXT, "%d:%[^:]:%[^:]:%d:%lf\n", &empID[i], lastName[i], firstName[i], &payGroup[i], &hoursWorked[i]) != EOF)
{
i++;
}
这没有明显的错误。当我尝试再次显示该数据时,会发生此问题。我用这个for循环尝试了它:
for(i = 0; i < 16; i++)
{
printf("%04d - %s - %s - %d - %.2lf\n", empID[i], lastName[i], firstName[i], payGroup[i], hoursWorked[i]);
}
但是,我得到以下结果,而不是预期的结果:
4587591 - - - 0 - 0.00
0006 - - - 0 - 0.00
0052 - - - 0 - 0.00
0052 - - - 0 - 0.00
0052 - - - 0 - 0.00
0320 - - - 0 - 0.00
0320 - - - 0 - 0.00
0005 - - - 0 - 0.00
0004 - - - 0 - 0.00
0003 - - - 0 - 0.00
0001 - Satriani - Joe - 6 - 38.00
0002 - Vai - Steve - 1 - 44.50
0003 - Morse - Steve - 10 - 50.00
0004 - Van Halen - Eddie - 3 - 25.75
0005 - Petrucci - John - 8 - 42.25
0006 - Beck - Jeff - 3 - 62.00
一开始是什么导致了所有垃圾,我有什么办法可以删除它吗?
答案 0 :(得分:4)
在执行i
循环之前,您很可能从未将fscanf
初始化为零。