【问题标题】:How to construct a char array with absolute integer value(s) and equivalent char integer value(s) in C?如何在 C 中构造一个具有绝对整数值和等效 char 整数值的 char 数组?
【发布时间】:2016-01-03 08:10:03
【问题描述】:

例如,我需要一个 char 数组,其中包含 NUL '\0' 字符,后跟 char '1'。将 char 数组初始化为:

char *str = "foo\01bar";

产生以下等效的十六进制表示:

<hex values of foo> 0x1 <hex values of bar>`

而我需要:

<hex values of foo> 0x0 <hex value of char '1'> <hex values of bar>

如何定义这样的char数组(以char *str = &lt;mycustomarray&gt;;的方式); 我知道,修改后的附加例程也附加 NUL 字符可以解决问题,但我对此不感兴趣。

【问题讨论】:

  • C 没有字符串类型。这都是惯例。请查阅您的 C 书。
  • 什么语言? C 还是 C++?
  • C++ 不是 C 不是 C++。选择一种语言!
  • @Olaf 确实 C 没有字符串类型,但确实有一个 string 作为字符数组的特例。
  • @chux:这是 C 语言中的普通 char 数组。 C stdlib 的“字符串”函数只是使用数据的特殊编码。该语言的唯一直接支持是字符串文字,它们被转换为(const) char *.

标签: c++ c string


【解决方案1】:

来自 C++ 标准:

八进制转义序列:
\八进制数字
\八进制数字八进制数字
\八进制数字八进制数字八进制数字

你可以使用:

char *str = "foo\0001bar";

char *str = "foo\0" "1bar";

【讨论】:

    【解决方案2】:

    根据cppreferenceWikipedia,允许的序列包括\nnn(八进制)和\xnn(十六进制)。为防止1 被计为转义序列的一部分,您必须用零填充所有数字,例如\0001\x001

    【讨论】:

      猜你喜欢
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      相关资源
      最近更新 更多