我想知道是否有直接的方法来寻址二维字符数组并在其上存储字符串。
而且我知道,通过使用 malloc,我可以动态地将内存分配给字符串,例如 char * names[number]
我可以 malloc (char *)malloc(50*sizeof( char))
并完成它。
而且我还知道,通过使用 for 循环并分配每个元素,您可以实现相同的效果。 我通过这个类似的问题找到了它here .
但我的情况是,有没有办法使用数组名称和索引直接存储字符串。它应该看起来像这样。这里不是 popper 代码,我只是想展示它应该是什么样子(来 self 上面提到的链接)
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.
}
我想你可能已经明白我在说什么了。
最佳答案
当然可以。但在这种情况下,您需要使用 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
是一个更好的选择。但首先您需要阅读此链接中的注释(如何正确处理丢失的空字节)。
关于c - 有没有直接的方法来寻址 2D char 数组并在 C 中存储字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32558394/