如何在 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 = &lt;mycustomarray&gt;;的方式); 我知道,修改后的附加例程也附加 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 数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中识别具有整数值的默认参数

如何在 for 循环中创建具有整数值的 Checkbuttons?

如何匹配在linq中具有多个用逗号分隔的整数值的列?

在 C++ 中找到小于特定整数值的最接近的浮点值?

c语言中如何将short,int,long,float这些类型的数值转换为字符串?

c语言中如何将short,int,long,float这些类型的数值转换为字符串?