忽略字符串中的逗号

时间:2013-05-15 01:03:09

标签: c string

我有以下代码:

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, artistgenre一起运行时,字符数组“line”就会改变。如何将所有内容都设置为逗号一个字符串,以便在sscanf运行时,数组"genre"包含单词"Pop"?现在它显然是"Falling",因为它是第三个词。

由于

2 个答案:

答案 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循环。有了它,您可以轻松找到最后一个逗号后面的子字符串。