C语言中strcmp可以比较二维数组吗

#include<stdio.h>
#include<string.h>
#define N 2
void main()
{

char a[N][2]={1,2,3};
char b[N][2]={1,2,3};

if(strcmp(a,b)==0)
printf("两个一样");
else
printf("不一样");

}
这个错在哪了呢,正确的比较二维数组的方法和格式应该是怎么样的呢
最新回答
梦已隔江南

2025-03-02 00:19:43

C语言中strcmp可以比较

二维数组
吗?

不行,strcmp只能比较2个

字符串
,即2个一维的字符数组。如果要比较2个2维的字符串数组,必须逐个字符串元素进行比对。

#include<
stdio.h
>
#include<
string.h
>
#define N 2
void main()
{
    // char a[N][2]={1,2,3};
    // char b[N][2]={1,2,3};
    char a[n][2]={"abc", "hello", "world"};
    char b[n][2]={"abc", "hello", "world"};
    bool mark=true;
    for(int i=0; i<N; i++) {
        if(!strcmp(a,b)) {
            mark=false;
            break;
        }
    }
    if(mark)
        printf("两个一样");
    else
        printf("不一样");
}


如果满意,欢迎采纳,谢谢

如有疑问,欢迎追问

追问
请问你的第十二行里那个是什么意思其中的a,b代表的是什么呢
追答

if(!strcmp(a,b)) {

哦,我的代码写错了,第12行应该改成

        if(!strcmp(a[i],b[i])) {

       if(!strcmp(a[i],b[i]))等效于if(strcmp(a[i],b[i])!=0)

代码还有问题,现已改正:

#include<stdio.h>
#include<string.h>
#define N 2
void main()
{
    // char a[N][2]={1,2,3};
    // char b[N][2]={1,2,3};
    //没注意,这里的字符串数组定义有误,现已改正
    char a[N][20]={"abc", "hello", "world"};
    char b[N][20]={"abc", "hello", "world"};
    bool mark=true;
    for(int i=0; i<N; i++)
        if(!strcmp(a[i],b[i])) {
            mark=false;
            break;
        }
    if(mark)
        printf("两个一样\n");
    else
        printf("不一样\n");
}
游戏人间

2025-03-02 03:57:46

不能 用双循环更简单
#include<stdio.h>
#include<string.h>
#define N 2
void main()
{

char a[N][2]={1,2,3};
char b[N][2]={1,2,3};

for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
if(a[i][j]==b[i][j]);
}
}
printf("两个一样");
}
接住路过的风

2025-03-02 07:30:47

strcmp只能比较两个字符串,不能比较两个二维数组。