在数组值中显示额外数据

Posted

技术标签:

【中文标题】在数组值中显示额外数据【英文标题】:showing extra data in array values 【发布时间】:2012-08-08 07:52:13 【问题描述】:

我在硬质合金 c/c++ 中使用这部分 c 代码

   char c1[]=0x01;
   char c2[]=0x02;
   char*  c [] = c1,c2;

当我检查 c[0],c[1].. 的值时,我在调试模式下看到两个这样的值

c[0] = \x01\x01 & (x) = *[0] = \x01  
c[1] = \x02\x01\x01 & (x) = *[1] = \x02

如果我这样计算长度

int cclen2 = strlen(c[0]); 

得到 cclen2 = 2;但我应该将值设为 1。

【问题讨论】:

【参考方案1】:

c1c2 没有空终止符,strlen() 需要空终止符(以及许多其他 C 字符串处理函数,例如 printf("%s", c1))。仅当使用字符串文字初始化 char[] 时才会隐式添加空终止符。

更改为:

char c1[] =  0x01, 0x00 ;
char c2[] =  0x02, 0x00 ;

或:

char c1[] = "\x01";
char c2[] = "\x02";

【讨论】:

【参考方案2】:

Array 创建一种特殊类型的常量指针。如果您将其声明为 char,则最后添加一个空字符。 实际上,您的 c[0] 语句已替换为 *(c+0);并获取地址c。

strlen(c[0]) 被 strlen(c) 替换; 你得到了完整长度的字符串,直到空字符。

我认为这已经足够解释了。

【讨论】:

以上是关于在数组值中显示额外数据的主要内容,如果未能解决你的问题,请参考以下文章

内置相机,使用额外的 MediaStore.EXTRA_OUTPUT 存储图片两次(在我的文件夹中,在默认值中)

Pyspark 在数组中添加额外的双引号以节省时间

从数据库中获取额外的数据到数组中

Laravel,sync() - 如何同步数组并传递额外的数据透视字段?

如何向 Django 模型添加额外数据以在模板中显示?

从 Laravel 中的数组向数据透视表中的额外列添加条件值