在数组值中显示额外数据
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】:c1
和 c2
没有空终止符,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 存储图片两次(在我的文件夹中,在默认值中)