次のコードは期待どおりに機能し、出力します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 はランダムな文字に置き換えられるのですか?