char first_array[5][4] = {"aaa","bbb","ccc","ddd","eee"};
char second_array[1][4];
我如何复制first_array中的第三个元素(" ccc")并将其保存到second_array?
下面的语法显然是错误的,但这就是我要求的:
second_array[0] = first_array[2];
此外,复制后,我还想知道如何比较两个数组中的元素。同样,下面的语法可能是错误的,我只是在解释我尝试做的事情:
if(second_array[0] == first_array[2]){ printf("yes"); } //should print yes
答案 0 :(得分:2)
你不能在c中分配数组,你可以用strcpy()
这样的库函数填充数组,所以
second_array[0] = first_array[2];
将是
strcpy(second_array[0], first_array[2]);
但是,您必须确保目标数组符合您要复制的字符数。
如果您尝试比较c中的两个字符串,则无法通过==
运算符执行此操作,因为c中的字符串是char
的数组,其中包含非{{1}的序列字符后跟一个nul
字符,所以如果你写这个
nul
即使您成功复制数据,结果也很可能是错误的,因为您没有比较数组的内容,而是比较它们的地址,因此为了正确地比较它们,还有一个函数if (second_array[0] == first_array[2])
那么比较字符串的正确方法是
strcmp()
上述函数要求您包含if (strcmp(second_array[0], first_array[2]) == 0)
标题,并且传递的字符串是c语义中的字符串,即我上面描述的内容。
答案 1 :(得分:-1)
我最近也尝试这样做:无法在C 中进行此类直接分配。
当您编写first_array[0]
时,编译器会将其读作指向first_array[2]
的第一个元素(字符)的地址,而不是整个字符串。当你运行赋值时,如果它可以工作,它只会设置第一个字符。
最简单的方法是使用strncpy
或memcpy
(或循环来循环播放字符串。