gpt4 book ai didi

c - 从二维字符数组初始化指向字符的指针数组

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

我有一个函数

int executeCommand(char args[][TOKENSIZE]){
char *argv[] = {args[0], args[1]}; // This works
char *argv[] = {args}; // This doesn't
}

args 变量的长度不是固定的,所以我不能按原样使用第一行。由于某些原因,我不想使用 malloc 或 free。有没有什么方法可以从 args 初始化这个 argv 数组,而无需对条目数进行硬编码。

最佳答案

函数需要以某种方式知道大小,否则这是不可能完成的任务。一种可能的方法是使用指向 VLA 的指针:

int executeCommand(size_t n, char args[n][TOKENSIZE]){
char* argv[n];
for(size_t i=0; i<n; i++)
{
argv[i] = args[i];
}
}

至于你为什么不能简单地使用args而不是复制数组地址,我不知道。

数据的完整硬拷贝看起来像

char argv[n][TOKENSIZE];
memcpy(argv, args, sizeof(char[n][TOKENSIZE]));

关于c - 从二维字符数组初始化指向字符的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46028893/

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