用strcmp函数比较两个字符串,结果不正确啊

2024-10-31 04:20:50
推荐回答(5个)
回答1:

strcmp的实现是这样的,对两个字符串,先比较第一个字符,如果不相等,返回差值。如果相等,继续比较下一个字符,直到有不相等或遇到‘\0’时结束。

现在你把数组a和b传入,因为前三个字符都相等,会越界继续比较的。

如果你想比较两个字符串,字符串是要用‘\0’结束的。
如果你只想比较前n个,可以使用strncmp,strncmp(a,b,3);

回答2:

你这是在比较字符数组了吧 不是在比较字符串了
char a[] = "abc";
char b[] = "abc";应该这么定义
你之前定义的是
char a[]={'a','b','c'}; //char a[3] 是可以的 a[2] = 'c'
char b[]={'a','b','c'};// char a[4]也是可以的 a[3] = '\0'
不一样的

回答3:

因为你没有加字符串的结尾标志'\0',所以才会出错。

char a[]={'a','b','c','\0'};

char b[]={'a','b','c','\0'}

回答4:

字符串你后面还必须要加char a[]={'a','b','c','\0’};
char b[]={'a','b','c','\0'}

回答5:

你可以把字符串的初始化改成这样:
char a[]="abc";
char b[]="abc";
那个getch();可以不要