有没有办法对两个字符串进行标记并并行移动标记? (因为我有两个字符串,我不能两次使用strtok(NULL, "bar")
)
另外,有没有办法让strtok
对字符串进行标记并保持该字符串不被取消?
例如:
void foo(char* form, char* num){
char *templ=form, *tempr=num;
templ = strtok(templ, " ");//but this tokenize form as well
答案 0 :(得分:2)
是的,在大多数平台上都有。您可以使用strtok_r
,这是strtok
的可重新版本,它不会将状态存储在静态内存中:
char *save1, *save2;
temp1 = strtok_r(templx, " ", &save1);
temp2 = strtok_r(temply, " ", &save2);
请注意,如果可用,通常应使用strtok_r
,即使是解析单个令牌来源也是如此。
如果strtok_r
不可用,您可以使用sscanf
并跟踪被标记化的字符串中的位置。根据您尝试解决的标记化任务的复杂性,这也可以提供可行的解决方案。
答案 1 :(得分:1)
所以,曾几何时,strtok的手册页对于不使用它更加明显。无论如何: