字符数组

问题描述:

我正在尝试使用calloc构建一个字数组。字符数组

我有什么:

char** word; 
word=(char**)calloc(12,sizeof(char*)); 
for(i=0;i<12;i++){ 
word[i]=(char*)calloc(50,sizeof(char)); 
} 

,如果我想有12场的每能够存储50个字符的字符数组这是正确的吗?

谢谢!

该代码是正确的。几点:

所以代码可以被改写为:

char** word; 
int i; 

word = calloc(12, sizeof(char*)); 
for (i = 0; i < 12; i++) 
    word[i] = calloc(50, 1); 

在C,对'字符串'进行操作的大多数函数要求char数组以NULL结尾(printf("%s\n", word[i]);)例子)。如果需要,该缓冲器保持50个字符,并用于为“字串”,那么为空终止分配附加字符:

word[i] = calloc(51, 1); 

作为评论由eq-一个不易出错的方法来使用sizeof是:

word = calloc(12, sizeof(*word)); 
+0

+使用'sizeof * ptr_variable'减少了sizeof'出错的概率。 – 2012-08-09 16:17:49