【发布时间】:2017-03-31 13:55:21
【问题描述】:
我有一个使用strtok 的小程序,如下所示:
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="1,2,,3,4,5";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str,",");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, ",");
}
return 0;
}
我的输出如下:
Splitting string "1,2,,3,4,5" into tokens:
1
2
3
4
5
但是当我遇到连续的分隔符,, 时,我需要将空值作为空字符串,例如在这种情况下。
IE。我需要输出为:
将字符串 "1,2,,3,4,5" 拆分为标记:
1
2
3
4
5
有什么办法吗?
【问题讨论】:
-
"1,2,,3,4,5"--->"1,2, ,3,4,5"没有简单的方法可以做到这一点。您必须检查 strtok 返回的地址并检查差异是否 == 1。 -
按照@FredLarson 的链接建议使用
strpbrk -
这是正确的行为。只需检查
strlen(pch),如果为零则忽略它。