我想從一個簡單的文本文件讀取字符串和整數到我的數組。但問題是我在列表中間的一行中出現了一些隨機字符。這可能與換行問題有關,但我不確定。文本文件如下所示:從文件讀取行
4
Mr Tambourine Man
Bob Dylan
1965
Dead Ringer for Love
Meat Loaf
1981
Euphoria
Loreen
2012
Love Me Now
John Legend
2016
第一個數字(4)表示列表中有多少首歌曲。我做了一個結構,它能夠保存歌曲併爲每個指針動態地分配內存。 結構:
typedef struct Song {
char *song;
char *artist;
int *year;
} Song;
分配:
Song *arr;
arr = (Song*)malloc(sizeof(Song));
功能:
int loadFile(char fileName[], Song *arr, int nrOf) {
FILE *input = fopen(fileName, "r");
if (input == NULL) {
printf("Error, the file could not load!\n");
} else {
int i = 0;
fscanf(input, "%d\n", &nrOf);
for (int i = 0; i < nrOf; i++) {
arr[i].song = (char*)malloc(sizeof(char));
arr[i].artist = (char*)malloc(sizeof(char));
arr[i].year = (int*)malloc(sizeof(int));
fgets(arr[i].song, 100, input);
fgets(arr[i].artist, 100, input);
fscanf(input, "%d\n", arr[i].year);
}
printf("The file is now ready.\n");
fclose(input);
}
return nrOf;
}
你能發現問題?或者你有更好的解決方案?
奧基謝謝你。這工作! – Henke