将二维数组中的单个元素复制并比较到 C 中的另一个数组

Copying and comparing individual element from 2D array to another array in C

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

我最近也在尝试这样做:在 C 中无法进行这种直接赋值。

当你写 first_array[0] 时,编译器会将其读取为指向 first_array[2] 的第一个元素(字符)的地址,而不是整个字符串。当您 运行 赋值时,如果它起作用,它只会设置第一个字符。

最简单的方法是使用 strncpymemcpy(或循环遍历字符串。

你不能在c中给数组赋值,你可以用一些库函数填充数组,比如strcpy(),所以

second_array[0] = first_array[2];

会是

strcpy(second_array[0], first_array[2]);

但是您必须确保目标数组适合您要复制到其中的字符数。

如果你试图比较 c 中的两个字符串,你不能通过 == 运算符来完成,因为 c 中的字符串是 char 的数组,其中包含一系列非 nul 个字符后跟一个 nul 个字符,所以如果你写这个

if (second_array[0] == first_array[2])

即使你成功复制了数据,结果也很可能是错误的,因为你不是在比较数组的内容,而是在比较它们的地址,所以要正确比较它们还有一个函数strcmp()那么比较字符串的正确方法是

if (strcmp(second_array[0], first_array[2]) == 0)

上面的函数要求你包含 string.h header,并且传递的字符串是 c 意义上的字符串,即我上面描述的。