-1

我正在尝试使用 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)?

4

3 回答 3

2

这是因为您在测试它是否为空之前打印该行。

基本上,在您的循环中,您测试它是否为空,然后更新该值(现在可能为空),然后打印它。所以最后它打印空值,测试并看到空值,然后退出 while 循环。

尝试这个

pch=strtok(line,",");

while(pch!=NULL){
    printf("%s\n",pch);
    pch=strtok(NULL,", ");        
}  
于 2013-07-01T11:08:10.117 回答
1

您只需要像这样在 while 循环中更改语句的顺序:-

while(pch!=NULL){
printf("%s\n",pch);
pch=strtok(NULL,", ");        
}  

您应该首先打印该值,然后使用strtok. 它将确保在打印其内容之前对其pch进行检查。NULL

于 2013-07-01T11:10:58.773 回答
-1
while(pch!=NULL){
 printf("%s\n",pch);
        pch=strtok(NULL,", ");        

        }  
于 2013-07-01T11:08:26.480 回答