0

次のコードは期待どおりに機能し、出力しますABC

#include <stdio.h>

void printString (char toPrint [100]);

int main()
{
  char hello [100];
  hello[0] = 'A';
  hello[1] = 'B';
  hello[2] = 'C';
  hello[3] = '\0';

  printString(hello);

}

void printString (char toPrint [100]) 
{
  int i = 0;

  while (toPrint[i] != '\0')
  {
    printf("%c", toPrint[i]);
    ++i;
  }

}

しかし、ヌル文字を追加する行を削除すると

  hallo[3] = '\0';

wBCÇL, ╗BCÄL, ┬BCNLなどのランダムな出力が得られます。

どうしてこんなことに?printString() のループは '\0' に遭遇しないため、無限に実行されると予想していましたが、'A'、'B'、および 'C' はどうなったのでしょうか? なぜ B と C は出力に表示されるのに、A はランダムな文字に置き換えられるのですか?

4

3 に答える 3