Я пытаюсь прочитать строки и целые числа из простого текстового файла в мой массив. Но проблема в том, что я получаю некоторые случайные символы в строке в середине моего списка. Вероятно, это связано с проблемой новой строки, но я не уверен. Текстовый файл выглядит следующим образом:Чтение строк из файла
4
Mr Tambourine Man
Bob Dylan
1965
Dead Ringer for Love
Meat Loaf
1981
Euphoria
Loreen
2012
Love Me Now
John Legend
2016
первый номер (4), указывает на то, сколько песен есть в списке. Я создал структуру, которая сможет удерживать песни и динамически распределять память для каждого указателя. Struct:
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;
}
Вы можете найти эту проблему? Или у вас есть лучшее решение?
Okey спасибо. Это сработало! – Henke