0

これはとても奇妙です。最初に宣言/初期化する char 配列に応じて、C コードで他の配列に対して strncat() を実行すると、空の配列が上書きされるようです。

    char t_str[]="";
    char ran_str[]="";
    ... inbuf ="8889  ";
    while (inbuf[pos]!=' ')
    {
       strncat(t_str, &inbuf[pos],1);
       printf("t_str so far: %s\n", t_str);
       printf("ran_str so far: %s\n", ran_str);
       pos++;
    }

出力:

   t_str so far: 8
   ran_str so far:
   t_str so far: 88
   ran_str so far: 8
   t_str so far: 888
   ran_str so far: 88
   t_str so far: 8889
   ran_str so far: 889

ran_strの前に初期化するt_strと、 ran_str[]I'm のように埋められませんstrncat() t_str。これが起こっている理由は何ですか?

4

3 に答える 3