【问题标题】:C add hex-value to string, no libraryC将十六进制值添加到字符串,没有库
【发布时间】:2015-01-13 18:31:53
【问题描述】:

我有一个函数需要在末尾发送一个带有<cr> 的字符串。怎么能直接 在不使用任何库函数的情况下,将字符串部分与 C 中的 <cr> = 0x0D 连接起来? (我正在使用 uC。)

示例数组/字符串“ABC\x0D”,但 0x0D 不应作为 ascii 发送,而应作为 <cr>

【问题讨论】:

  • 你能澄清一下吗?
  • 需要查看您的代码。这不起作用,例如,如果初始字符串是常量。
  • 有很多方法可以做到这一点,但哪种方法有效取决于上下文。我们需要查看您的代码才能知道在这种情况下可以做什么。基本上,您需要在字符串的末尾连接"\r"。库函数strcat() 就是这样做的;您可以轻松编写自己的版本。 但是如果字符串是字符串文字,您需要先在足够的空间中制作副本以允许 CR。而且无论您是否需要为额外的数据字节提供足够的空间。
  • @user3482407 如果我理解正确,"ABC\x0D""ABC\r" 会做你想做的事。
  • 正如@JonathanLeffler 所写,"ABC\r"。您似乎对 ASCII 值感到困惑。 \0x0D\r 和(不知何故)<cr> 都是相同的 ASCII 值 13。

标签: c arrays string add


【解决方案1】:

如果您的数组中有足够的空间,您只需在字符串的末尾添加一个0x0d 和一个\0。示例:

char str[8] = "ABCDEF";

这个字符串包含 6 个字符和终止的 null :它可以接受 cr。如何做到这一点:

str[6] = '\r'; /* or 0x0d or 13 */
str[7] = '\0'; /* or 0x0 or 0 */

就是这样……

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 2017-12-02
    • 1970-01-01
    • 2010-10-04
    • 2018-01-22
    • 1970-01-01
    • 2012-01-24
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多