【问题标题】:printf strange behavior when printing char - LLDB debugger打印 char 时 printf 的奇怪行为 - LLDB 调试器
【发布时间】:2013-01-17 22:50:55
【问题描述】:

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

【问题讨论】:

  • 对您的代码进行文本复制和粘贴会更容易阅读和使用。

标签: c++ printf lldb


【解决方案1】:

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

【讨论】:

  • Any 行为将“如预期”。如果你给 printf("%s", blah) 一个指向非 NUL 终止数组的指针,则行为未定义。
【解决方案2】:

如果使用%s 格式说明符打印字符数组a,则需要以'\0' 终止:

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);

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多