我的数据字符串如下:3,1,6,IN,88
。
我只需要获得前3个周期(3 | 1 | 6 | IN,88 )
因此它会在最后一个,
之前停止循环,最后一个字符串将是IN,88
:
char *pch=strtok (data,",");
while (pch != NULL)
{
//works well here
pch = strtok (NULL, ",");
}
也会拆分IN,88
,我想用逗号保留它。
设置一个计数器以突破3将显然不起作用。 有没有一种简单的方法可以在不改变数据的情况下实现这一目标?
答案 0 :(得分:0)
在标记化后,您需要原始字符串的未标记部分。您还需要将输入字符串标记为指定的次数。你可以试试这个。
char *tmp; // will store the untokenized part of the string
int count; // how many times the string will be tokenized
tmp = data; // before starting to tokenize, the whole input is untokenized
char *pch = strtok (data,",");
count = 1;
while (pch != NULL && count <= 3) // you want to tokenize thrice
{
tmp = tmp + strlen(pch) + 1; // shift the pointer pointing untokenized string
pch = strtok(NULL,",");
count++;
}
tmp = tmp + strlen(pch) + 1; // shift the pointer after last tokenization
在此之后,如果你执行puts(tmp);
,你将获得字符串的未标记部分作为输出。