我在C语言中使用strtok()
函数来解析CSV字符串。首先,我将其标记化以仅查找有多少个标记,以便我可以分配正确大小的字符串。然后,我使用与上次标记化相同的变量进行遍历。但是,每次第二次这样做时,strtok(NULL, ",")
返回NULL
,即使还有更多的标记需要解析。请问有人能告诉我我做错了什么吗?
char* tok;
int count = 0;
tok = strtok(buffer, ",");
while(tok != NULL) {
count++;
tok = strtok(NULL, ",");
}
//allocate array
tok = strtok(buffer, ",");
while(tok != NULL) {
//do other stuff
tok = strtok(NULL, ",");
}
在第二个 while 循环中,即使有更多的 token,它总是在找到第一个 token 后结束。有人知道我做错了什么吗?
strtok()
是什么,但没有人读过文档?我学习C语言的时候也没人告诉我它,但是当我必须要使用它的时候,我立刻去仔细阅读了相关文档。 - Karl Knechtel