我正在尝试使用strtok用逗号分隔字符串。这条线看起来像这样:
A:K149, A:N171, A:T172
我正在使用以下代码。
pch=strtok(line,",");
printf("%s\n",pch);
while(pch!=NULL){
pch=strtok(NULL,", ");
printf("%s\n",pch);
}
但印刷的是:
A:K149
A:N171
A:T172
(null)
如何摆脱额外的行和最后的(null)?
答案 0 :(得分:1)
这是因为您在测试之前打印了该行是否为空。
基本上,在循环中测试它是否为null,然后更新值(现在可以为null)然后打印它。所以最后它打印null,测试并看到null然后退出while循环。
试试这个
pch=strtok(line,",");
while(pch!=NULL){
printf("%s\n",pch);
pch=strtok(NULL,", ");
}
答案 1 :(得分:1)
您只需要在while循环中更改语句的顺序,如下所示: -
while(pch!=NULL){
printf("%s\n",pch);
pch=strtok(NULL,", ");
}
您应首先打印该值,然后使用strtok
获取下一个字符序列(字符串)。它将确保在打印内容之前检查pch
NULL
。
答案 2 :(得分:0)
while(pch!=NULL){
printf("%s\n",pch);
pch=strtok(NULL,", ");
}