【发布时间】:2019-06-12 13:39:32
【问题描述】:
谁能给我一个示例,如何通过传递数组长度的变量在 C 中创建 2D char 数组。
//Current program
int i;
int seq_cnt;
exec sql
select count(0)
into seq_cnt
from table;
char tmp1[50][5+1];
char tmp2[50][5+1];
for(i=0;i < seq_cnt ; i++){
strcpy(tmp1[i],"something");
strcpy(tmp2[i],"something");
}
现在我想要的是tmp1 和tmp2 的数组大小,我想使用seq_cnt 来声明tmp1 和tmp2 的实际大小,而不是硬编码它(50)。
喜欢:
char tmp1[seq_cnt][5+1];
char tmp2[seq_cnt][5+1];
我是 C 新手。
【问题讨论】:
-
如果您使用的是 C99+,
char tmp1[seq_cnt][5+1]; char tmp2[seq_cnt][5+1];应该可以工作。或者您可以使用malloc动态分配内存。注意:"something"不适合大小为5 + 1的数组 -
@Spikatrix:取决于编译器。某些 VC 版本不支持 VLA。 C11 也使 VLA 成为可选的。 C++ 根本不知道它们。
标签: c string multidimensional-array dynamic