C 使用strtok时,多个分隔符如何影响我的程序?

C 使用strtok时,多个分隔符如何影响我的程序?,c,file,strtok,separator,C,File,Strtok,Separator,我的文本文件中包含以下内容: 5,Albert Einstein, 101 1,Nikola Tesla, 102 在我下面的示例中,变量的读取方式如下: char* token, separators[] = ",\n", name[30]; int group; int prioKey; while (fgets(buffer, SIZE_BUFFER, pFile)) { token = strtok(buffer,

我的文本文件中包含以下内容:

5,Albert Einstein, 101
1,Nikola Tesla, 102
在我下面的示例中,变量的读取方式如下:

char* token, separators[] = ",\n", name[30];
    int group;
    int prioKey;

    while (fgets(buffer, SIZE_BUFFER, pFile))
    {
        token = strtok(buffer, separators);
        prioKey = atoi(token);

        token = strtok(NULL, separators);
        strcpy(name, token);

        token = strtok(NULL, separators);
        group = atoi(token);

    }

我的确切问题是:为什么在分隔符[]中我同时有“,”和“\n”,我不需要“,”吗?这是怎么回事?我看到在名字后面有一个“”算作“\n”,但是程序怎么知道该用什么呢?

您不需要
'\n'
fgets
逐行读取。
fgets
将换行符(
'\n'
)放在缓冲区的末尾。您可以使用(例如)
buffer[strcspn(buffer,“\n”)]=0来剥离它
fgets
之后,但在任何
strtok
之前,但这需要额外扫描。只需将
'\n'
放入
分隔符
中就更容易了。另外,因为您有
5,Albert Einstein,101
,而不仅仅是
5,Albert Einstein,101
,所以您应该使用:
分隔符[]=“,\n”
[现在空格也是分隔符]