Ваш пример далеко не аналогичен. %d
относится к одиночному целому числу, а %s
относится к целой (но все еще одиночной) строке.
Вы также не передаете размер массива n[]
в printf
- скорее, вы звоните printf
n
раз. Вы печатаете одну int
точно так же, как вы печатаете одну строку.
Фактическая длина строки неизвестна априори , скорее printf
выполняет итерацию строки, пока не встретит \0
терминатор. Эквивалентно:
for( int i = 0; s[i] != '\0'; i++)
{
printf( "%c", s[i] ) ;
}
, потому что
char s[100] = " Hello ";
эквивалентно:
char s[100] = { ' ', 'H', 'e', 'l', 'l', 'o', ' ', '\0' } ;