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