.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
後でこれらの数値を処理する必要があるのは、行の最初の数値を同じ行の 2 番目の数値で割り、10 を掛けて、数値に応じて "*" を表示させることです。したがって、次のように出力されます。
Optimus
+: *****
-: *****
*: ********
/: *******
Megatron
+: ********
-: *******
*: *******
/: ********
「+」は名前の下の最初の行です。「-」は同名の2行目です。3番目の「*」。4番目の「/」。