我找不到解決這個問題的方法。
我有一個像這樣的文本檔案: 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);
}
有人對此有提示嗎?我可以知道該怎么做。我知道這不是一個好問題,因為它表明缺乏研究,但我發誓我在網上搜索了幾個小時。
非常感謝。
uj5u.com熱心網友回復:
您正在fscanf針對錯誤的值進行測驗1。
根據手冊頁,
成功時,這些函式回傳成功匹配和分配的輸入項的數量;如果發生早期匹配失敗,這可能會少于規定的值,甚至為零
由于您要求*scanf()轉換兩個專案,因此您希望對照 . 檢查其回傳值2。
以下作品:
...
while(fscanf(f,"%s%d",name,&score) == 2){
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/462101.html
