读书人

不太对!该如何解决

发布时间: 2013-09-07 14:12:44 作者: rapoo

不太对!

#include <stdio.h>
int strcmp (char * p1,char * p2)
{
int i,flag;
flag = 1;
for (i = 0; flag == 1 && p1[i] != '\0' && p2[i] != '\0'; i++)
{
if (p1[i] != p2[i])
{
flag = 0;
}
}
if (flag == 1)
{
return (0);
}
else
return (p1[i] - p2[i]);
}
int main (void)
{
char str1[100],str2[100];
int a;
printf_s ("Input str1:\n");
gets_s (str1);
printf_s ("Input str2:\n");
gets_s (str2);
a = strcmp (str1,str2);
printf_s ("\n%d",a);
}

哪不对了?输入abcd和abcb值为0呢?
[解决办法]
看了你代码,
1 当你条件不成立的时候,
除了 flag = 0 ,你的i++ 操作也做了
所以左右比较的都是p1和p2的值都是空的

for (i = 0; flag == 1 && p1[i] != '\0' && p2[i] != '\0'; i++)
{
if (p1[i] != p2[i])
{
flag = 0;
//这里直接break, 不做i++操作
break;
}
}

读书人网 >C语言

热点推荐