Я думаю, что вы либо пишете i< length
в цикле for вместо toUpSize[i]
как:
for (int i = 0; i < length; i++) {
upsized[i] = toupper(toUpSize[i]);
}
Или передайте toUpSize
в виде строки с нулевым символом в конце, если вы хотите написать toUpSize[i]
в условии цикла for
. Если вы сделаете это, то вы должны поставить \0
в конце upsized
после выхода из цикла, в индекс i
, для которого toUpSize[i]
равно \0
. И для этого вам нужно переместить определение i
за пределы цикла for
, чтобы вы могли использовать его после выхода из цикла.
Строка с нулевым символом в конце - это то, что имеет символ \0
в конце строки.
char x[] = {'N', 'a', 'w', 'a', 'z' };
char y[] = {'N', 'a', 'w', 'a', 'z', '\0' };
Здесь x
является , а не строкой с нулевым символом в конце, но y
является строкой с нулевым символом.
Если строки определены как:
char z[] = "Nawaz";
const char *s = "Nawaz";
Здесь z
и s
- строка с нулевым символом в конце, потому что они оба созданы из «Nawaz», который является строкой с нулевым символом в конце. Обратите внимание, что sizeof("Nawaz")
вернет 6
, а не 5
, именно потому, что в конце строки стоит \0
.