我正在尝试将一些2D字符串数组复制到另一个字符串中。 我有2个看起来像这样的数组:
char *tabA[SIZE];
char *tabB[SIZE];
我想将tabA[indexA]
复制到tabB[indexB]
,但strcpy(tabB[indexB], tabA[indexA])
根本不起作用,程序崩溃(但编译器不会返回任何错误)。
答案 0 :(得分:1)
strcpy(tabB [indexB],tabA [indexA])根本不起作用,程序得到 应声
可能是因为tabB[indexB]
未初始化并包含NULL
或无效指针。
<强>解决方案强>
使用二维数组tabB
或动态地char tabB[SIZE1][SIZE2] = ;
或使用for(i = 0; i < SIZE; ++i) tabB[i] = malloc(...);
将内存静态分配到strdup
。如果是动态分配,请确保free
并且不要泄漏内存。
答案 1 :(得分:1)
我使用Box
中的public static void random(){
Random r = new Random();
char c = (char)(r.nextInt(26) + 'A');
System.out.print(c);
}
,原型如下:
memcpy
memcpy()函数将n个字节从内存区域src复制到内存 area dest。
有关详细信息,请使用终端上的string.h
命令阅读void *memcpy(void *dest, const void *src, size_t n);
手册。
memcpy
答案 2 :(得分:0)
tabB[indexB] = strdup(tabA[indexA]);
完美无缺:)