C字符数组中的空元素

时间:2016-01-08 18:46:46

标签: c arrays

我正在浏览一些用于在Linux中初始化网络摄像头的源代码,并遇到了以下令人费解的代码:

struct stat st;
char devName[15] = {0, };

sprintf(devName, "/dev/video%d", deviceIndex);

似乎领先的零没有做任何事情:

printf("%s", devName);

返回/ dev / video13,其中13是deviceIndex。

领先的零做什么?如果逗号后面没有任何内容,这意味着什么? {0, };

1 个答案:

答案 0 :(得分:3)

这意味着数组devName将填充0 s。

具有缺失值的数组将初始化为0:

int devName[10] = { 1, 2 }; // initialize to 1,2,0,0,0...

这适用于所有类型的数组,无论是char还是int

<小时/> 首先使用sprintf(devName, "/dev/video%d", deviceIndex);。这将使用字符串devName覆盖数组/dev/video13,假设为deviceIndex = 13。但那些只有12 char。其余的3仍然有\0

你的数组是一个char数组。 ascii值为0的char是NUL \0个字符。因此,当您打印数组时,它会打印到最后\0,就像字符串一样。