从C

时间:2018-05-15 23:04:02

标签: c arrays string file sorting

我的任务是编写一个带字符串引用和整数引用参数的函数。该函数必须扫描.txt文件并将参考参数设置为具有最高分数和相应分数的播放器的名称。 这是我必须参考的scores.txt文件中写的:

Ronaldo
10400
Didier
9800
Pele
12300
kaka
8400
Cristiano
8000

我目前有这么多的编码写了但是我被困在我如何将这些名字与得分相匹配,因为它们必须没有特别的顺序。在我的编码中,我将数字从最大到最小排序,但我不确定这是否需要。

FILE *input;
char name[name_len];
double score[score_len];
int a;
int b;
double placeholder;

input = fopen("scores.txt", "r");

if (input == NULL)
{
    printf("\n Cannot open scores.txt for input\n");
}
for (a =0; a < 5; ++a)
fscanf(input, "%s%lf", name, score);

for (a = 0; a < 5; ++a)                                     /* Repeats the step until three numbers are sorted*/
{
    for (b = a + 1; b < 5; ++b)                             /* Repeats until the last two numbers are sorted*/
    {
        if (score[a] < score[b])                                /* Sorts the 3 numbers using a placeholder to exchange the numbers in the array*/
        {
            placeholder = score[a];
            score[a] = score[b];
            score[b] = placeholder;
        }

    }
}


fclose(input);
return 0;

非常感谢任何有关解决方案的帮助或我如何向前迈进。

1 个答案:

答案 0 :(得分:0)

您可以只读取数字和名称,并替换分数的值和名称(如果更大)。

char name[name_len];
double score[score_len];
char highScoreName[name_len];
double highScore = 0;
...
for (int a = 0; a < 5; ++a) 
   {
   fscanf(input, "%s %lf", name, score[a]);
   if (highScore < score[a]) 
   {
      highScore = score[a];
      strcpy(highScoreName, name);
   }
}