我有一个数组 uint8_t arr[512]
,我需要在这个数组中存储一个字符串、IP 地址和一个 32 位数字。所以我想到定义另一个字符串数组,如下所示。
uint8_t *ch[] = {
"abcd",
"1.1.1.1",
"123456782341223344445"
};
然后在arr[512]
中执行memcpy
。这个可以吗?我想我可能无法从 arr
检索 IP 地址。请有任何其他想法。感谢您的宝贵时间。
最佳答案
如果你想一想指针数组是如何存储在内存中的,你就会明白为什么不能这样做。
您的字符串数组如下所示:
+-------+-------+-------+ | ch[0] | ch[1] | ch[2] | +-------+-------+-------+ | | | | | v | | "abcd" | v | "1.1.1.1" v "123456782341223344445"
因此,如果您从ch
数组执行memcpy
,您只会复制指针,而不是实际的字符串。
当然,您可以将数组中的每个字符串分别复制到目标数组中,但这与分离和不相关的字符串没有什么不同。
关于c - 将字符串存储在 char 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17785646/