2015-09-14 69 views
-2

我想知道是否有直接的方法來處理二維字符數組並在其上存儲字符串。是否有直接的方法來處理二維字符數組並在其中存儲字符串C

而且我知道,通過使用malloc,我可以動態分配內存以串例如用於char * names[number]我的malloc (char *)malloc(50*sizeof(char))和完成它。

而且我知道通過使用for循環並分配每個元素可以實現相同的效果。 我是通過這個類似的問題here找到它的。

但我的情況是,有沒有辦法使用數組名和索引直接存儲字符串。它應該看起來像這樣。到這裏是不是波普爾代碼,我只是想表明它應該如何看起來像(從我上面提到的鏈接)

char arrayOfWords[NUMBER_OF_WORDS][MAX_SIZE_OF_WORD]; 

int i;` 
for (i=0; i<NUMBER_OF_WORDS; i++) { 
    arrayOfWords[i] = "laksith"; //here I need to use a way like arrayOfWords+1 etc. 
} 

我想你可能會得到我在說什麼的想法。

+1

'sizeof(char)'是1. –

+6

您需要查看[strncpy](http://linux.die.net/man/3/strncpy)。 –

+2

閱讀@PaulR鏈接的頁面,然後再次閱讀,特別是**警告**部分。 –

回答

3

當然可以。但在這種情況下,你需要使用strcpy,而不是賦值運算符:

for (i=0; i<NUMBER_OF_WORDS; i++) { 
    strcpy(arrayOfWords[i], "laksith"); //here I need to use a way like arrayOfWords+1 etc. 
} 

UPD:作爲@PaulR在上面的評論指出,strncpy是一種更好的選擇。但首先你需要閱讀這個鏈接的註釋(如何正確處理缺失的空字節)。

+1

爲什麼strncpy比strcpy更好? –

+1

因爲它檢查超限情況。 – Rudi

+0

@Rudi不是真的,因爲如果源大於'size_t n',否則在目的地末尾隱式地附加無空字符。因此,在這種情況下,目標不應被視爲空終止的C字符串(因爲它會溢出)。 – LPs

相關問題