打印char - LLDB调试器时printf奇怪的行为

时间:2013-01-17 22:50:56

标签: c++ printf lldb

在为我的iOS Xcode项目使用静态C ++库时,我遇到了printf和Xcode LLDB调试器的奇怪行为,有时我的printf("%s", char*)打印结果是与数字或乱码字符连接的字符。附图说明了自己。有什么想法吗?

enter image description here

2 个答案:

答案 0 :(得分:2)

似乎按预期工作。 %s需要以NUL结尾的字符串,即对于给定的char*,在第一个'\0'之前打印任何内容。如果您希望阵列适合a[4]=0;,则必须分配5个字节并指定%s

答案 1 :(得分:0)

如果您使用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);