C言語 教えて下さい!!!
教えてください!!
data01.txt というテストの得点が書き込んであるテキストファイルから得点を読み込んで、得点順に並べ替えて表示させるプログラミングなんですがコンパイルは成功します。
しかし、実行してみると全く違う結果になってしまいます。
どこが間違っているのか指摘してください。
#include <stdio.h>
/* 構造体の宣言 */
struct data
{
int score;
int rank;
}d;
/* 関数 */
void rank(struct data *x, int n)
{
int i, j;
for ( i=0; i<n; i++)
x[i].rank = 1;
for ( i=0; i<n; i++)
for ( j=0; j<n; j++)
if(x[i].score < x[j].score)
x[i].rank++;
}
/* main文 */
int main(void)
{
int a;
struct data x[50];
/* ファイルから得点を読み込む */
FILE *fp;
fp = fopen("data01.txt", "r");
for ( a=0; a<50; a++)
x[a] = atoi(getc(fp);
fclose(fp);
/* 順位付け */
a = 50;
rank(x,a);
printf("Rank Score\n");
for ( a=0; a<50; a++)
printf("%d %d\n", x[a].rank, x[a].score);
return 0;
}
ちなみに data.txt は
左側の列は番号 右側の列が得点
1 50
2 62
3 73
4 42
5 99
6 10
7 68
8 54
9 87
10 98
11 54
12 30
13 15
14 60
15 78
16 98
17 65
18 75
19 32
20 99
21 80
22 64
23 52
24 31
25 99
26 10
27 20
28 5
29 65
30 53
31 54
32 35
33 45
34 23
35 26
36 97
37 88
38 99
39 56
40 42
41 32
42 56
43 56
44 54
45 0
46 54
47 80
48 99
49 54
50 56