如何在 C 中构造一个具有绝对整数值和等效 char 整数值的 char 数组?
Posted
技术标签:
【中文标题】如何在 C 中构造一个具有绝对整数值和等效 char 整数值的 char 数组?【英文标题】:How to construct a char array with absolute integer value(s) and equivalent char integer value(s) in C? 【发布时间】: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 = <mycustomarray>;
的方式);
我知道,修改后的附加例程也附加 NUL 字符可以解决问题,但我对此不感兴趣。
【问题讨论】:
C 没有字符串类型。这都是惯例。请查阅您的 C 书。 什么语言? C 还是 C++? C++ 不是 C 不是 C++。选择一种语言! @Olaf 确实 C 没有字符串类型,但确实有一个 string 作为字符数组的特例。 @chux:这是 C 语言中的普通char
数组。 C stdlib 的“字符串”函数只是使用数据的特殊编码。该语言的唯一直接支持是字符串文字,它们被转换为(const) char *
.
【参考方案1】:
来自 C++ 标准:
八进制转义序列: \八进制数字 \八进制数字八进制数字 \八进制数字八进制数字八进制数字
你可以使用:
char *str = "foo\0001bar";
或
char *str = "foo\0" "1bar";
【讨论】:
【参考方案2】:根据cppreference和Wikipedia,允许的序列包括\nnn
(八进制)和\xnn
(十六进制)。为防止1
被计为转义序列的一部分,您必须用零填充所有数字,例如\0001
或\x001
。
【讨论】:
以上是关于如何在 C 中构造一个具有绝对整数值和等效 char 整数值的 char 数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 for 循环中创建具有整数值的 Checkbuttons?