使用MPLAB编译器解析由Commas分隔的字符串?

时间:2013-05-02 16:39:58

标签: c

我正在解析一个用逗号分隔的字符串并打印这些值但是由于某种原因,如果我在MPLAB C编译器上运行它,这段代码只打印第一个值。但是,如果我在Codeblocks上运行此代码,它会打印出所有值。

MPLAB OUTPUT

2

CODEBLOCKS OUTPUT

2

100

200

100

代码:

char somestr[] ="2,0100,0200,0100";
char *pt;
int a;
pt = strtok (somestr,",");
    while (pt != NULL) 
{

        a = atoi(pt);
        printf("%d\n", a);
        pt = strtok (NULL, ",");
    }

我希望输出像这样

2

0100

0200

0100

那真正发生了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

我想知道你是如何得到01000200的(使用%d说明符,你应该得到100200,{{3} }),但通过运行此代码,绝对应该打印所有输出。代码似乎很好。可能的原因可能不是这样的:

  • 您还有一些代码可以调用未定义的行为并干扰这段代码;
  • 这不是您正在编译的实际代码;
  • 终端或MPLAB编译器编译后程序打印的位置有错误,或者您没有注意到它应该滚动;
  • 编译器或标准库错误? (非常不可能......)

编辑:这样你想要输出为零填充。为此,在%04d变量时使用printf()格式说明符。