【发布时间】:2014-02-26 13:31:48
【问题描述】:
在下面的 C 程序中,strtok 用于分割字符串。程序给出了例外的输出,但我无法理解它是如何工作的。
首先,我们将string 传递给tokenize 和delimiter。但是在以后的迭代中,我们只是传递了NULL。 如何和为什么函数记住字符串?
如果我想同时对不同的字符串使用标记化怎么办?
#include "stdafx.h"
#include <cstdio>
#include <cstring>
int main(int argc, char* argv[])
{
char arr[] = "This is string to split";
char * subStr = new char[10];
subStr = strtok(arr, " ");
while (subStr)
{
printf("%s\n", subStr);
subStr = strtok(NULL, " ");
}
return 0;
}
输出:
This
is
string
to
split
【问题讨论】:
-
如果它不记得如何知道要返回哪个令牌,第一个或第二个或最后一个。
-
@MadHatter,有办法,我们可以一次又一次地传递新字符串。问题是,目前的方法不能让它一次只对一个字符串起作用。
-
对于“它的记忆方式”可能是
static pointer。我不认为可以使用动态分配,因为它什么时候知道free内存。 -
方法是……(不记得什么)
标签: c string split strtok libc