如何确保当用户输入新数据时我的数据不会被覆盖? [C 结构和文件]
How to make sure that my data does not get overwritten when user inputs new ones? [C Structures & Files]
我正在尝试创建一个可以包含多个播放列表和多首歌曲的程序。我的问题是每个播放列表似乎只能包含一首歌曲。当用户输入一首新歌曲时,之前的歌曲会被覆盖。我做错了什么,我该如何解决?
字段songs
是一个数组。当您执行 songs->title
时,您会访问数组第一个元素的标题。
您应该有一个索引来跟踪设置的歌曲。该字段 song_count
似乎就是为了这个目的。
void addSongToPlaylist(struct playlist *playlists, int index){
int i, choice;
printf("THE PLAYLISTS AVAILABLE ARE:\n");
for (int i = 0; i < index; i++){
printf("\t[%d] %s\n", i, playlists[i].name);
}
printf("\nEnter playlist number: ");
scanf("%d", &choice);
printf("\nEnter song title: ");
scanf("%s", playlists[choice].songs[playlists[choice].song_count].title);
printf("Enter song artist: ");
scanf("%s", playlists[choice].songs[playlists[choice].song_count].artist);
printf("Enter song album: ");
scanf("%s", playlists[choice].songs[playlists[choice].song_count].album);
// Increment sound_count for next time
playlists[choice].song_count++;
printf("Succesfully added song to playlist!\n");
}
我正在尝试创建一个可以包含多个播放列表和多首歌曲的程序。我的问题是每个播放列表似乎只能包含一首歌曲。当用户输入一首新歌曲时,之前的歌曲会被覆盖。我做错了什么,我该如何解决?
字段songs
是一个数组。当您执行 songs->title
时,您会访问数组第一个元素的标题。
您应该有一个索引来跟踪设置的歌曲。该字段 song_count
似乎就是为了这个目的。
void addSongToPlaylist(struct playlist *playlists, int index){
int i, choice;
printf("THE PLAYLISTS AVAILABLE ARE:\n");
for (int i = 0; i < index; i++){
printf("\t[%d] %s\n", i, playlists[i].name);
}
printf("\nEnter playlist number: ");
scanf("%d", &choice);
printf("\nEnter song title: ");
scanf("%s", playlists[choice].songs[playlists[choice].song_count].title);
printf("Enter song artist: ");
scanf("%s", playlists[choice].songs[playlists[choice].song_count].artist);
printf("Enter song album: ");
scanf("%s", playlists[choice].songs[playlists[choice].song_count].album);
// Increment sound_count for next time
playlists[choice].song_count++;
printf("Succesfully added song to playlist!\n");
}