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”
[现在空格也是分隔符]