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

#include<stdio.h>#include<string.h>main(){chara[]={'a','b','c'};charb[]={'a','b','c'}... #include <stdio.h>#include <string.h>main(){ char a[]={'a','b','c'}; char b[]={'a','b','c'}; int c=strcmp(a,b); printf("%d\n",c); getch();}

两个字符串数组完全一样,按照strcmp函数应该输出0但是输出-1,用wintc编译输出-47,得不到正确结果。发现string.h中的函数不太靠谱啊,以前用过其中的isapha、isdigit等函数统计各种字符,发现函数的返回值根本不像描述的那样。
展开
 我来答
百度网友88d9b99
推荐于2018-03-05 · TA获得超过225个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:76.8万
展开全部
strcmp的实现是这样的,对两个字符串,先比较第一个字符,如果不相等,返回差值。如果相等,继续比较下一个字符,直到有不相等或遇到‘\0’时结束。

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

如果你想比较两个字符串,字符串是要用‘\0’结束的。
如果你只想比较前n个,可以使用strncmp,strncmp(a,b,3);
宽厚还漂亮的桃花adc7
推荐于2017-12-16 · TA获得超过333个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:132万
展开全部
你这是在比较字符数组了吧 不是在比较字符串了
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'
不一样的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
靓番茄
2012-12-03 · TA获得超过2707个赞
知道小有建树答主
回答量:665
采纳率:100%
帮助的人:652万
展开全部
因为你没有加字符串的结尾标志'\0',所以才会出错。

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

char b[]={'a','b','c','\0'}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寂寞而莫我知也
2012-12-03 · TA获得超过284个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:229万
展开全部
字符串你后面还必须要加char a[]={'a','b','c','\0’};
char b[]={'a','b','c','\0'}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zy363756854
2012-12-03
知道答主
回答量:13
采纳率:0%
帮助的人:6.9万
展开全部
你可以把字符串的初始化改成这样:
char a[]="abc";
char b[]="abc";
那个getch();可以不要
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式