-1

我有以下代码:

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和运行时,字符数组“line”都会改变。genre我怎样才能使所有内容都变成逗号一个字符串,以便在sscanf运行时,数组"genre"包含单词"Pop"?现在它"Falling"显然成立,因为它是第三个词。

谢谢

4

2 回答 2

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);
于 2013-05-15T01:11:34.563 回答
2

我认为strtok是您正在寻找的。有关说明和示例代码,请参阅链接。

从这几行中,您可以看到它是如何工作的:

char line[300] = "Can't Help Falling in Love, Michael Buble, Pop";
dump = strtok(line,",");
dump = strtok(NULL,",");
genre = strtok(NULL,",");

歌曲标题可能包含逗号。在这种情况下,您应该稍微修改链接页面上的 while 循环。这样,您可以轻松找到最后一个逗号后面的子字符串。

于 2013-05-15T01:08:21.600 回答