使用在编译时未知的数据初始化char * const数组

问题描述 投票:0回答:1

如何使用非文字条目初始化char * const数组?条目来自标准输入。我尝试过

char * const args[2] = (char * const *)calloc(2,1025);
sscanf(command,"%s %s ",args[0],args[1]);
/*args will be used later*/

如果不存在转换,则得到“无效的初始化程序”,如果存在转换,则得到“ cast指定数组类型”。如果我完全避免使用calloc,则args的两个条目最终都为空。似乎无论我做什么,在声明char * const类型的数组后都无法用值填充。

c arrays char const
1个回答
0
投票

[calloc在元素数为2时不进行两次分配。这将是与从malloc中得到的分配相同,但为零。

如果您真的希望指针本身为const,则需要进行数组初始化:

char * const args[2] = {
    calloc(1025, sizeof(char)),
    calloc(1025, sizeof(char))
};

注意,每个数组中的元素数为1025,每个元素的大小为sizeof(char)

© www.soinside.com 2019 - 2024. All rights reserved.