2012-08-09 30 views
0

我正在嘗試使用calloc構建一個字數組。字符數組

我有什麼:

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

,如果我想有12場的每能夠存儲50個字符的字符數組這是正確的嗎?

謝謝!

回答

1

該代碼是正確的。幾點:

所以代碼可以被改寫爲:

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