我正在尝试编写一个程序,该程序从.txt读取行并将它们输入到2个不同的数组中。如何从.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
EDIT 2
w ^之后我需要处理的数字是将第一个数字与第二个数字在同一行中分开,乘以10,然后根据数字显示“*”。所以它会打印出这样的样子:
Optimus
+: *****
-: *****
*: ********
/: *******
Megatron
+: ********
-: *******
*: *******
/: ********
“+”是名称下的第一行。 “ ” - “是同名的第二行。 “*”为第三。第四个“ ”/“。
fscanf(ifp,“%f”,&grade);在技术上也是正确的。作为&grade == grade。 – 2013-03-23 00:06:15
@Armin,事实并非如此。 &grade是指向数组的指针,_not_不是元素。 – teppic 2013-03-23 00:07:10
去试试看,检查地址和等级和等级,它是一样的。 – 2013-03-23 00:08:13