Проблема при печати строки - PullRequest
1 голос
/ 03 февраля 2010

Я пишу код C, в котором мой массив длиной 2 символа содержит String My Но при печати его на экран с помощью put ().Я получаю этот вывод

Мой £ ■ 0√ "

В чем причина таких кодов ???

И если мой массивтогда длина равна 2. Как я могу получить выходные данные длины 2+ ???

Ответы [ 4 ]

6 голосов
/ 03 февраля 2010

звучит так, как будто вы пропустили нулевой терминатор - строка должна состоять из трех символов: «m», «y», «\ 0»

5 голосов
/ 03 февраля 2010

Если вы явно задали длину строки равной 2, вы не оставляете место для терминатора NUL, который puts использует для нахождения конца строки. Так как у вас его нет, он продолжит распечатывать содержимое памяти, следуя заданной вами строке, до тех пор, пока не попадет в байт в памяти, который содержит 0. 0. 1002 *

Чтобы избежать этого, обычно не следует указывать длину при создании строкового литерала:

char string[2] = "My"; // avoid this
char string2[] = "My"; // use this instead.
2 голосов
/ 03 февраля 2010

Прошло много времени с тех пор, как я сделал C. Но я подозреваю, что ваш массив символов не заканчивается нулевым символом.Таким образом, вам нужно завершить ваш массив с '\ 0'

1 голос
/ 03 февраля 2010

Длина вашего массива должна быть не менее 3, по одному на каждый символ и одну на символ \ 0.

убедитесь, что у вас есть завершающий символ.

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