我有以下代码:
char dump[50];
char genre[50];
char line[300] = "Can't Help Falling in Love, Michael Buble, Pop";
sscanf(line, "%s %s %s", dump, dump, genre);
每当程序与不同歌曲的names, artist
和genre
一起运行时,字符数组“line”就会改变。如何将所有内容都设置为逗号一个字符串,以便在sscanf
运行时,数组"genre"
包含单词"Pop"
?现在它显然是"Falling"
,因为它是第三个词。
由于
答案 0 :(得分:3)
char genre[50];
char line[300] = "Can't Help Falling in Love, Michael Buble, Pop";
sscanf(line, "%*[^,], %*[^,], %s", genre);
printf("%s", genre);//display genre
姓名和艺术家需要
char name[50];
char artist[50];
char genre[50];
char line[300] = "Can't Help Falling in Love, Michael Buble, Pop";
sscanf(line, "%[^,], %[^,], %s", name, artist, genre);
printf("name: %s\n", name);
printf("artist: %s\n", artist);
printf("genre: %s\n", genre);
答案 1 :(得分:2)
我认为strtok正是您所寻找的。请参阅链接以获取说明和示例代码。
从这几行开始,您可以看到它的工作原理:
char line[300] = "Can't Help Falling in Love, Michael Buble, Pop";
dump = strtok(line,",");
dump = strtok(NULL,",");
genre = strtok(NULL,",");
歌曲标题可能包含逗号。在这种情况下,您应该修改链接页面上的while循环。有了它,您可以轻松找到最后一个逗号后面的子字符串。