0

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

MPLAB 输出

2

码块输出

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

那么到底发生了什么?谢谢!

4

1 回答 1

0

我想知道你是如何得到0100and0200的(使用说明%d符,你应该得到100and 200并且你做到了),但是通过运行这段代码,所有的输出都应该被打印出来。代码看起来不错。可能不是这种情况的可能原因:

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

编辑:所以你希望输出是零填充的。为此,请在ing 变量%04d时使用格式说明符。printf()

于 2013-05-02T16:45:51.500 回答