将二维数组中的单个元素复制并比较到 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]
的第一个元素(字符)的地址,而不是整个字符串。当您 运行 赋值时,如果它起作用,它只会设置第一个字符。
最简单的方法是使用 strncpy
或 memcpy
(或循环遍历字符串。
你不能在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 意义上的字符串,即我上面描述的。
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]
的第一个元素(字符)的地址,而不是整个字符串。当您 运行 赋值时,如果它起作用,它只会设置第一个字符。
最简单的方法是使用 strncpy
或 memcpy
(或循环遍历字符串。
你不能在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 意义上的字符串,即我上面描述的。