c - 从文件制作数组然后打印所述数组

标签 c

我从文本文档中将以下值扫描到各种数组中:

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  

是什么导致了开头的所有垃圾,我能做些什么来消除它?

最佳答案

在执行 fscanf 循环之前,很可能您从未将 i 初始化为零。

关于c - 从文件制作数组然后打印所述数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10148453/

相关文章:

c++ - 将大小 <= N 的所有连续 0 位组翻转为 1s

c - 读取直到行尾

java - 相当于 Java 中的 "sizeof() of C"

c - 如何从非浏览器设备发出 HTTP POST?

c - 如何请求 Tizen native 服务应用程序的隐私权限

c - uint32 和 uint64 的 OSX、C 等效项是什么?

c - 对齐地址偏离 8 字节边界 4 个字节

c - 如何在 C 结构体中索引指针

将多个 C 文件编译为单个不可执行的目标文件

c - 获取链接列表fgets和scanf C的输入