使用strtok从字符串中解析空标记

Bas*_*ash 5 c string

我的应用程序生成如下所示的字符串.我需要将分隔符之间的值解析为单个值.

2342|2sd45|dswer|2342||5523|||3654|Pswt
Run Code Online (Sandbox Code Playgroud)

我正在使用strtok循环中这样做.对于第五个标记,我得到5523.但是,我还需要考虑两个分隔符之间的空值||.根据我的要求,5523应该是第六个令牌.

token = (char *)strtok(strAccInfo, "|");

for (iLoop=1;iLoop<=106;iLoop++) { 
            token = (char *)strtok(NULL, "|");
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Pat*_*ter 6

在那种情况下,我经常喜欢p2 = strchr(p1, '|')memcpy(s, p1, p2-p1)内部的循环.它速度快,不会破坏输入缓冲区(因此可以使用const char *)并且非常便携(即使在嵌入式设备上).

它也是可重入的; strtok不是.(BTW:reentrant与多线程没有任何关系.strtok已经使用嵌套循环中断.可以使用,strtok_r但它不是那么便携.)