странное поведение printf при печати char — LLDB отладчик

Работая со статической библиотекой C ++ для моего проекта iOS Xcode, я встретил странное поведение с отладчиком printf и LcodeB Xcode, иногда мои результаты печати printf("%s", char*) был символ, соединенный с числами или мусорными символами. Прикрепленное изображение говорит само за себя. Любая идея?

введите описание изображения здесь

0

Решение

Кажется, работает как ожидалось. %s требует NUL-оканчивающейся строки, то есть для данного char*распечатай что-нибудь до первого '\0', Вы должны выделить 5 байтов и назначить a[4]=0; если вы хотите, чтобы ваш массив подходил для %s,

2

Другие решения

Массив символов a должен быть завершен с '\0' если вы печатаете его с %s спецификатор формата:

char * a = new char[5];

a[0] = 'i';
a[1] = 'p';
a[2] = 'o';
a[3] = 'd';
a[4] = '\0';

printf("word: %s\n", a);
0

По вопросам рекламы [email protected]