Dadi 发表于 2014-3-13 19:42:37

strcmp(a,b)==0的问题

if(strcmp(a,b)==0) {   //已经定义了a,b
print("哈哈");
}
无法输出"哈哈"!
以下是我测试为什么不能的原因
printf("n=%d,f=%d",a,b);
printf("n=%d,f=%d",a,b);
printf("n=%d,f=%d",a,b);
printf("n=%d,f=%d",a,b);
printf("n=%d,f=%d",a,b);
printf("n=%d,f=%d",a,b);
printf("n=%d,f=%d",a,b);
printf("n=%d,f=%d",a,b);
printf("n=%d,f=%d",a,b);
print("....");
printf("n=%c,f=%c",a,b);
printf("n=%c,f=%c",a,b);
printf("n=%c,f=%c",a,b);
printf("n=%c,f=%c",a,b);
printf("n=%c,f=%c",a,b);
printf("n=%c,f=%c",a,b);
printf("n=%c,f=%c",a,b);
printf("n=%c,f=%c",a,b);
printf("n=%c,f=%c",a,b);结果都是相等的,a和b的值都一样,但是为什么就是不能比较呢?

oggplay 发表于 2014-3-13 19:42:38

有点想当然了吧!!
函数原型intstrcmp(const char *s1, const char *s2);
看清楚const char *s1 可不是数字比较 这是比较字符串的

仰望天上的光 发表于 2014-3-13 20:51:15

strcmp的两个参数都是字符串,也就是含有字符元素'\0'的字符数组,因为你的数组不含有'\0',所以他们不是字符串,
所以用strcmp会产生不可预知的结果。

Dadi 发表于 2014-3-14 17:54:02

仰望天上的光 发表于 2014-3-13 20:51 static/image/common/back.gif
strcmp的两个参数都是字符串,也就是含有字符元素'\0'的字符数组,因为你的数组不含有'\0',所以他们不是字 ...

这就是字符串啊uuu_oo这个字符串,我只是用printf输出他们的十进制是怎么样的

超级忍者龟 发表于 2014-3-14 18:06:44

char a = "Hello World";
char b = "Hello World";
这样定义肯定可以的,我不知道你a, b数组怎么定义,你试试这样!

仰望天上的光 发表于 2014-3-14 19:23:11

Dadi 发表于 2014-3-14 17:54 static/image/common/back.gif
这就是字符串啊uuu_oo这个字符串,我只是用printf输出他们的十进制是怎么样的

你的所谓“字符串”里没有结束字符'\0',所以不是真的字符串

牡丹花下死做鬼 发表于 2014-5-3 09:43:28

你用strcmp()来比较数字你本事有的
这个函数是比较两个字符串的 ASCII之和的

Dadi 发表于 2014-5-12 22:03:10

牡丹花下死做鬼 发表于 2014-5-3 09:43 static/image/common/back.gif
你用strcmp()来比较数字你本事有的
这个函数是比较两个字符串的 ASCII之和的

有点启发,暑假再来做了。
页: [1]
查看完整版本: strcmp(a,b)==0的问题