gpt4 book ai didi

c - C 字符数组中的空元素

转载 作者:行者123 更新时间:2023-11-30 18:38:11 24 4
gpt4 key购买 nike

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

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

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

看起来前导零没有做任何事情:

printf("%s", devName);

返回/dev/video13,其中 13 是设备索引。

前导零有什么作用?如果逗号后面没有任何内容是什么意思? {0, };

最佳答案

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

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

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

这适用于所有类型的数组,无论是 charint .

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

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

关于c - C 字符数组中的空元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34683999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com