我正在尝试编写一个程序,该程序从 .txt 读取行并将它们输入到 2 个不同的数组中。
到目前为止,我有这个:
#include <stdio.h>
int main() {
FILE * ifp = fopen("input.txt","r");
FILE * ofp = fopen ("output.txt", "w");
int participants = 0, i;
char name [10];
float grade [10];
float perc [10];
fscanf(ifp, "%d", &participants);
for (i=1; i<participants; i++) {
fscanf(ifp, "%s", &name);
fscanf(ifp, "%f", &grade);
}
printf( "%d\n", participants);
printf( "%s\n", name);
printf( "%f\n", grade);
fclose(ifp);
fclose(ofp);
return 0;
}
我要阅读的 txt 是:
2
Optimus
45 90
30 60
25 30
50 70
Megatron
5 6
7 9
3 4
8 10
我的问题是它会拿起前 2 行,但在到达数字时会停止。我正在尝试将名称放入一个数组中,并将所有数字成对放入不同的数组中。现在我只是想检查一下我是否正在拾取数组中的数字,但它并没有把它们全部拾起。
这是我得到的输出:
2
Optimus
0.000000
有任何想法吗?
编辑
这是我经过一些更改后的新代码:
#include <stdio.h>
int main() {
FILE * ifp = fopen("input.txt","r");
FILE * ofp = fopen ("output.txt", "w");
int participants = 0, i , j;
char name [10];
int grade [26];
float perc [26];
fscanf(ifp, "%d", &participants);
for (i=1; i<participants; i++) {
fscanf(ifp, " %s", name);
fscanf(ifp, " %d", grade);
}
printf( "%d\n", participants);
printf( "%s\n", name);
printf( "%d\n", grade[0]);
fclose(ifp);
fclose(ofp);
return 0;
}
我的新输出是:
2
Optimus
45
编辑 2
稍后我需要对这些数字做的是将一行中的第一个数字与同一行中的第二个数字相除,将其乘以 10,然后根据数字显示“*”。所以它会像这样打印出来:
Optimus
+: *****
-: *****
*: ********
/: *******
Megatron
+: ********
-: *******
*: *******
/: ********
“+”是名称下的第一行。“-”是同名下的第二行。“*”代表第三个。“/”代表第四个。