我有N行文件(MyFile.txt的),一個至極有7個領域:掌握與fgets垃圾桶閱讀文件
(id_artist:INT,藝術家:焦炭,id_song:INT,歌曲:焦炭,持續時間: int,year:int,valoration:int)
它們全部用空格('')分隔。我需要一個函數,給定一首歌(id)的id,返回具有相同id的歌曲的持續時間。
這裏是我的代碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ID;
FILE *fp = fopen("MyFile.txt","w");
fprintf(fp,"100 Lennon 1100 Imagine 181 1977 1\n123 Queen 1122 KQueen 190 1983 2\n144 Nirvana 1144 Polly 175 1989 3\n");
fclose(fp);
printf("Ingrese id: ");
scanf("%d",&ID);
int res = duracion(ID);
printf(res);
return 0;
}
int duracion(int id){
char line[100], artista[30], nombre[30];
int id_art, id_song, dur, ano, valoracion;
FILE *file = fopen("MyFile.txt","r");
while(fgets(line,100,file) != NULL)
{
//printf(line);
sscanf(line,"%d %s %d %s %d %d %d", &id_art, artista, &id_song, nombre, &dur, &ano, &valoracion);
if(id == id_song){
return dur;
}
}
return 0;
}
功能實際上發現表明行如果它存在,但功能不會返回0或1。 如果我取消對註釋行並搜索非existintg ID,我得到這樣的輸出:
100 Lennon 1100 Imagine 181 1977
d123 Queen 1122 KQueen 190 1983 2
<144 Nirvana 1144 Polly 175 1989 3
é
我調試的代碼試圖找到問題的地方,但我不明白。
1)通過檢查確認「MyFile.txt」寫入正確。 2)這是真實的代碼嗎? – chux