c语言中,如何判断两个char型的数组是否相同?

一般情况下,使用strcmp即可判断。但是下面这个例子貌似无法使用strcmp……
现定义char a[10]和char b[10](二者均没有设初始值),经过几步运算后,a[0]和b[0]均变为了1,现在需要判断二者是否相等。其实本来应该是相等的,但如果利用strcmp,结果是不相等。因为从a[1]到a[9]和从b[1]到b[9]之间的内容由strcmp无法判断,故得到结论不相等……
出了strcmp之外,还有别的办法吗?

因为没有初始化,所以即使a[0]和b[0]相等,也不能说数组a和b就相等

把a和b都初始化为同一个数,然后计算以后,用strcmp
或者你真的仅仅要比较a[0]和b[0]就可以判断是否相等的话,那么直接比较下if(a[0]==b[0])

严格来说,使用任何未初始化的局部变量都是很傻的做法
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-30
使用'/0'啊,即先用长度函数(不好意思我不记得拼写了)判断两者长度,长度相同时,求出长度n,此处n=1。然后a[1]='/0',b[1]='/0'(意思即是a[n]=b[n]='/0'),然后计算时就会忽略后面的不定空间的数据了。本回答被提问者和网友采纳
第2个回答  2009-09-30
用int i=strcmp(a,b)
i=0则相等
strcmp例子:
#include
#include

int main(void)
{
char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
int ptr;

ptr = strcmp(buf2, buf1);
if (ptr > 0)
printf("buffer 2 is greater than buffer 1\n");
else
printf("buffer 2 is less than buffer 1\n");

ptr = strcmp(buf2, buf3);
if (ptr > 0)
printf("buffer 2 is greater than buffer 3\n");
else
printf("buffer 2 is less than buffer 3\n");

return 0;
}
第3个回答  2009-09-30
为什么用strcmp比较出来是不相等,难道你的a,b不是字符串,而是分别有10个字符把数组占满了,那样的话strcmp肯定不能用的,strcmp只能针对字符串.
第4个回答  2009-09-30
数组里不一定存放的是字符串,那可以自己写一个判断函数呀。就别用strcmp了
相似回答