用strtok标记字符串

Mil*_*ilk 1 c

Example Text: 

bclk = /gsrpkg_te/gsrpkg/gsrdie/xxBCLK
Run Code Online (Sandbox Code Playgroud)

我想问一下关于"strtok"的问题.Below是一个示例代码,我遇到了一些疑问.

char *p4;
char *p5;
p4 = strtok (eqvline, "=");
p5 = strtok (NULL, ":");
if ( !strcmp (p4, "bclk") ) {
   strcpy ( sa_de_bclk, p5 );
   printf ( "[vTPSim] ---> bclk = %s.\n", p5);
}
Run Code Online (Sandbox Code Playgroud)

从上面的示例文本中没有":"(冒号)where.For我理解strtok()何时没有定义的符号被发现NULL将被分配为结果.

但是,为什么在这种情况下即使没有":",p5仍然有分配"/gsrpkg_te/gsrpkg/gsrdie/xxBCLK".

谢谢你的帮助.

小智 5

为了解strtok,当没有定义的符号时,会发现NULL将被分配为结果

也许你会strtok()strchr()或者混淆strstr().如果在字符串的剩余部分中找不到任何分隔符号,则strtok()返回剩余部分(更准确地说,是指向其第一个字符的指针).如果根本找不到分隔符,则可能是整个字符串.文档.

从haters和deniers的文档引用:

如果没有找到这样的字节,则当前令牌扩展到 s1指向的字符串的末尾,随后对令牌的搜索将返回空指针.

随后.没有立即呼叫找不到更多的分隔符,而是跟随它的那些分隔符.

  • 根据[This](http://pubs.opengroup.org/onlinepubs/009695399/functions/strtok.html)`成功完成后,strtok()将返回一个指向令牌第一个字节的指针.否则,如果没有令牌,strtok()将返回一个空指针 (2认同)
  • @ H2CO3*不要听那些说我错了的人哈哈哈......我赶紧回答,忘记了我不应该把外面的噪音带到这里.....明白问题是什么. ....为你+1 :) (2认同)
  • @PHIfounder别担心,这不是你:)谢谢. (2认同)