gpt4 book ai didi

c - 如何确定char指针数组元素的总字符长度?

转载 作者:太空宇宙 更新时间:2023-11-04 03:08:05 25 4
gpt4 key购买 nike

我遇到了以下问题:

我有一个字符指针数组

char *opts[] = { "-a", "--append", "-b" };

和存储在

中的命令名称
char cmd[] = "ls";

现在我需要计算所有可能的组合,这是我使用 GNU 科学库完成的,并使用计算组合执行命令。

我遇到的问题是如何计算将 char * 传递给 system() 所需的内存量。

这是我的第一次尝试:

int length = strlen(cmd) * sizeof(char);

for (int i = 0; i < 3; ++i) {
length += strlen(opts[i]) * sizeof(char);
}

好吧,它奏效了,但我感觉这不是正确/最佳的解决方案。我不能将二维数组转换为平面一维数组并获取它的大小(如果我没记错的话,C 中没有多维数组,C 只是模仿它们)。

最佳答案

Can't I cast the two-dimensional-array to a flat one-dimensional-array

技术上不正确,但在这里无关紧要,因为您没有二维数组。您有一个一维值数组,恰好有一个长度。无法保证这些字符串在连续的内存中,因此不可能一步测量它们的总大小。

拥有它的方式是获得你想要的值(value)的唯一方式。

附言请注意,sizeof(char) 保证等于 1。

P.P.S 虽然我已经标记了 tommie75 的答案,但我们可以使用它的一部分:

int numelem = sizeof(opts) / sizeof(opts[0]);
for (int i = 0; i < numelum; ++i)
{
length += strlen(opts[i]) * sizeof(char);
}

关于c - 如何确定char指针数组元素的总字符长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252486/

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