2015-09-14 73 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

相关问题