gpt4 book ai didi

c - 根据变量调整数组的大小

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

这可能是一个真正的新手问题,但我真的无法将任何其他答案应用到我的案例中。

假设我有这段代码:

 int sizemes=0;

char letrarand()
{
int sizemes = 31;
char mesaleat[31] = { ' ' };
char *pMesaleat;
pMesaleat = mesaleat;
int numaleat = 0, i=0;
int randascii = 0;
srand(time(NULL));

for (i = 0; i < 31; i++)
{
numaleat= rand() % 26;
randascii = numaleat + 65;
*(pMesaleat+i) =randascii;
printf("%c \t",*(pMesaleat+i));

}
return 0;
}

其中 letrarand 是一个函数,它将创建一个包含 31 个元素的数组,并为每个元素分配一个随机大写字母。现在可行,但我希望能够根据变量 sizeofmes 调整数组的大小,以便如果该变量(在函数之外)为 15,则数组将具有 15 个元素,依此类推。出于某种原因,我不能这样做,有什么想法吗?

最佳答案

C99 支持可变长度数组(它在 C11 中是可选的,您可以使用宏 __STDC_NO_VLA__ 检查它是否不受支持)。所以,你可以这样做:

int sizemes = 31;
char mesaleat[sizemes];

如果您的实现不支持 VLA(或使用 C89),那么您可以求助于 malloc():

char *mesaleat = malloc(sizemes * sizeof *mesaleat);
if (!mesaleat) {
/* error */
}

等等。

注意:完成后调用 mesaleat 上的 free()

关于c - 根据变量调整数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41266527/

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