Следующий код работает как положено и выводит 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
et c.
Почему это так? Я ожидал, что l oop в printString () будет работать вечно, потому что он не сталкивается с '\ 0', но что происходит с 'A', 'B' и 'C'? Почему B и C все еще отображаются в выводе, но A заменяется каким-то случайным символом?