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

どのようにして and を取得0100したのか (指定子0200を使用すると、 and を取得する必要があり、取得する必要があります)、このコードを実行すると、すべての出力が確実に出力されるはずです。コードは問題ないようです。これが当てはまらない理由として考えられるのは、次のとおりです。%d100200

  • 未定義の動作を呼び出し、このコードを妨害するコードがいくつかあります。
  • これは、コンパイルしている実際のコードではありません。
  • ターミナルまたは MPLAB コンパイラによってコンパイルされた後にプログラムが出力される場所にバグがあるか、スクロールする必要があることに気付かなかったのです。
  • コンパイラまたは標準ライブラリのバグ? (非常にありそうもない...)

編集:出力をゼロで埋めたい。そのためには、変数を ing する%04dときに書式指定子を使用します。printf()

于 2013-05-02T16:45:51.500 に答える