如何用int设置char []的大小

时间:2014-09-10 14:30:31

标签: c char size sizeof

我想创建char foo[]并使用int设置尺寸,但它根本不起作用!

}else{
    int start = match[1].rm_so;
    int end = match[1].rm_eo;
    char value[end-start];
    ...
}

value的大小始终为0,为什么会这样?

由于

2 个答案:

答案 0 :(得分:3)

你应该使用malloc。

char *value = malloc( (end-start) * sizeof(char))

使用malloc时,请记住在使用数组完成后释放内存。

 free(value)

如果您需要更多信息,请在此处查看更多信息:C Dynamic memory allocation

答案 1 :(得分:0)

它不起作用,因为您正在根据旧的C90标准编译C代码。在该标准中,数组大小必须是编译时常量。在现代C中,有一种称为可变长度数组(VLA)的东西,它允许您通过使用变量来声明数组,如您的示例所示。

请注意,VLA必须在本地范围内声明,您不能在文件范围(“global”)声明它们。

因此,最好的解决方案是获得一个现代编译器,如GCC,然后将其编译为标准C代码:gcc -std=c99 -pedantic-errors