Конструкция '\0'
обычно используется для представления нулевого символа. Здесь
printf("%c", '\0');
ничего не печатает.
А в декаларации s
char s[] = "Hello\0Bye";
когда вы печатаете как
for(i = 0; i < 7; i++) {
printf("%c", s[i]);
}
printf()
печатает до 0<7(h)
, 1<7(e)
.. 5<7(nothing on console)
, 6<7(B)
только итераций и 6th
charactar равен B
, следовательно, его отпечатки HelloB
.
Я ожидал, что будет напечатано «Hello»? Для этого вы должны вращать цикл до тех пор, пока не встретится \0
. Например, 1027 *
for(i = 0; s[i] != '\0'; i++) { /* rotate upto \0 not 7 or random no of times */
printf("%c", s[i]);
}
Или даже вам не нужно проверять s[i] != '\0'
for(i = 0; s[i]; i++) { /* loop terminates automatically when \0 encounters */
printf("%c", s[i]);
}