1

テキストドキュメントから次の値をさまざまな配列にスキャンします。

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  

最初にすべてのがらくたを引き起こしているのは何ですか、そしてそれを取り除くために私ができることはありますか?

4

1 に答える 1

4

ほとんどの場合、ループiを実行する前にゼロに初期化したことはありません。fscanf

于 2012-04-13T21:21:53.610 に答える