почему 0 удалил другую часть строки? - PullRequest
0 голосов
/ 15 февраля 2019

Я действительно не понял, почему удаляется "u'est"?

 int main()
{
 char dieser[15] = "Stan nu'est" ;
            dieser[6] = 0;
            printf(dieser);
return 0;
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Когда вы пишете

dieser[6] = 0;

Вы присваиваете значение 0 этому символу.Это значение сопоставляется с таблицей ASCII, когда программа выводит строку на экран.

Если вы посмотрите на таблицу ASCII , вы увидите, что символ со значением 0 равен NUL, что является нулевым терминатором ,Это указывает на конец строки.

Итак, что происходит: вы вставляете символ конца строки в середину вашей строки.Когда функция printf читает строку, она находит этот символ и останавливается.Вот как ты получаешь эту обрезанную струну.

0 голосов
/ 15 февраля 2019

На самом деле ваша строка на самом деле не удалена.Значение 0 (или «\ 0») указывает конец вашей строки.Поэтому printf прекращает печатать вашу строку, когда находит первое 0. Если вы измените свой код, сделайте:

int main()
{
 char dieser[15] = "Stan nu'est" ;
            dieser[6] = 0;
            printf(dieser);
            printf(&dieser[7]);
return 0;
}

Вы увидите «Stan n'est» в вашей консоли.Это означает, что ваша строка продолжается в памяти, но у вас есть '\ 0' вместо 'u' в позиции 6 вашей строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...