Я работаю над базовой библиотекой музыкальных файлов в C, которая позволяет вам открывать файл через командную строку и добавлять информацию, такую как художник, название песни и год публикации. Как только он выходит, он затем записывает эту информацию обратно в тот же файл.Проанализируйте файл с несколькими общими разделителями C
Проблема, с которой я столкнулась, - это найти решение для правильного разбора текстового файла.
Например, входной файл будет выглядеть примерно так:
Title: Heirloom, Artist: Basenji, Year Published: 2014
Title: With Me, Artist: Cashmere Cat, Year Published: 2014
проекта я работаю над специфицирует (против общей практики), что мы храним одну строку информации в struct Song
которая выглядит следующим образом :
struct Song {
char title[250];
char artist[250];
int year_published;
};
Каждый Song
хранится в массиве типа struct Song
, называется music_lib[]
.
Я знаю, как отделить каждую строку в один конкретный struct Song
, выполнив:
while(fscanf(input_file, "%s %s %ld", *temp_title, *temp_artist, *temp_year) != EOF)
copy_song_to_music_library(temp_title, temp_artist, temp_year);
То, что я не знаю, как сделать, как правильно разобрать текстовый файл, так что, когда у меня есть известный формат :
Title: Heirloom, Artist: Basenji, Year Published: 2014
для моего переменного заголовка, я получаю «Фамильный черту» (и название: раздели уходит), для моего переменного художника, я получаю «Басенджи~d» (с художником: раздел), и для моих летняя переменная я получаю 2014 год (с годом publis hed: убрано).
Есть ли простой способ сделать это?
Вы пробовали '' Название:% s, Исполнитель:% s, Year Опубликовано:% ld "'? – tumdum
@Tomasz Kłak '" Название:% s, ... 'не будет работать для заголовка с пространством типа' "With Me". – chux