我想创建char foo[]
并使用int
设置尺寸,但它根本不起作用!
}else{
int start = match[1].rm_so;
int end = match[1].rm_eo;
char value[end-start];
...
}
value
的大小始终为0,为什么会这样?
由于
答案 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
。