打印一个txt文件的10个最佳结果

Print the 10 best results of a txt file

我找不到解决这个问题的方法。

我有一个这样的文本文件:score.txt

pat 20
ananna 20
radis 19

行数可以在 10 到任何值之间。

我的目标是按顺序打印整数较大的第 10 行。

我试过了,但我什至无法读取文本文件中的数字。

void fillScore(){
    FILE* f =NULL;
    f= fopen("score.txt", "r");
    char name[20];
    int score,i,j,tmp;
    int tabScore[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
    char tabName[10][20];
    if (f==NULL) {
        perror("fopen");
        exit(EXIT_FAILURE);
    }
    while(fscanf(f,"%s%d",name,&score)==1){
        printf("TEST : %d - ",score);
        for(i=0;i<10;i++){
            if(score>tabScore[i]){
                tmp=tabScore[i];
                tabScore[i]=score;
                for(j=i+1;j<10;j++){
                    score=tabScore[j];
                    tabScore[j]=tmp;
                    tmp=score;
                }

            }
        }
    }
    for(i=0;i<10;i++){
            printf("%d\n",tabScore[i]);
    }
    

    fclose(f);
}

有人对此有提示吗?我可以知道怎么做。我知道这不是一个好问题,因为它表明缺乏研究,但我发誓我在网上搜索了几个小时。

非常感谢。

您正在根据错误的值 1 测试 fscanf

根据手册页,

on success, these functions return the number of input items successfully matched and assigned; this can be fewer than provided for, or even zero, in the event of an early matching failure

由于您要求 *scanf() 转换两个项目,因此您想要对照 2.

检查其 return 值

以下作品:

...
while(fscanf(f,"%s%d",name,&score) == 2){
...