查找char数组的长度

Nik*_*hil 24 c arrays

我有一些代码如下:

int i=0;
char a[7]={0x00,0xdc,0x01,0x04};
int len=0;
len = sizeof(a);
printf("The Length is : %d", len);
Run Code Online (Sandbox Code Playgroud)

在这里,我想a在c中找到数组的长度?如何才能做到这一点?

Joe*_*Joe 32

按照惯例,C字符串是'空终止'.这意味着最后有一个额外的字节,其值为零(0x00).任何使用字符串(例如printf)执行某些操作的函数都会将字符串视为在找到null时结束.这也意味着如果你的字符串不是以null结尾,它会继续运行,直到它找到一个空字符,这可以产生一些有趣的结果!

由于数组中的第一项是0x00,因此它将被视为长度为零(无字符).

如果您将字符串定义为:

char a[7]={0xdc,0x01,0x04,0x00};
Run Code Online (Sandbox Code Playgroud)

例如以null结尾

然后您可以strlen用来测量存储在数组中的字符串的长度.

sizeof衡量一种类型的大小.这不是你想要的.还要记住,数组中的字符串可能比数组的大小短.