这是我的代码。我在循环的帮助下匹配字符串。我不想为它使用任何功能。
int main()
{
int flag,j;
char a[30]={'\0'};
char b[]="this is a dog";
printf("enter string \n");
gets(a);
int p = strlen(b);
for(j=0;j<p;j++)
{
if(a[j]==b[j])
{
flag=0;
}
else
flag=1;
break;
}
if(flag==0)
printf("yes");
else
printf("no");
return 0;
}
问题是它正在以错误的方式检查字符串 就像“这是一只狗”和“这是一个男人”一样,它就是平等的。
答案 0 :(得分:3)
您的break
语句超出else
,这会导致您的循环在第一次迭代后中断。你需要这个
else
{
flag=1;
break;
}
答案 1 :(得分:2)
你正在使用strlen。你不需要那个。
C字符串应该匹配,直到其中一个字符串有'\0'
或其中一个字符不同。
char* pa = a;
char* pb = b;
while (*pa != *pb && *pa && *pb) {
++pa; ++pb;
}
// a equals b if (*pa == *pb) == true
// BTW, in equality they will both be zero which is the stop condition for the loop
printf("strings are %s", (*pa == *pb) ? "equal" : "different");
答案 2 :(得分:1)
不使用strlen
(预定义函数)执行此操作:
int main(){
int flag=0,j,i=0;
char b[]="this is a dog\0";
printf("enter string \n");
char input[50]; // change the size to compensate for your biggest input
char get; // variable to collect input character one by one
get = getchar(); // get the first character
while(get!='\n'){ // I am assuming \n marks the end of input
input[i] = get; // put that character into the input array
i++; // incriment counter ( replaces strlen as it counts how much is read )
get = getchar(); // get the next character
}
for(j=0;j<i;j++){
if(input[j]==b[j]){
// do nothing .. keep looping to see if other characters are the same too
}else{
flag=1; // the very first character that is different .. break from loop and print not same
break;
}
}
if(flag==0){
printf("yes\n");
}else{
printf("no\n");
}
return 0;
答案 3 :(得分:1)
这里看起来你忘记了} - 做适当的缩进是好的
for(j=0;j<p;j++)
{
if(a[j]==b[j])
{
flag=0;
}
else
flag=1;
break;
}
中断将使你的循环在第一次迭代时退出。
答案 4 :(得分:1)
这是我的代码:
int main(){
int flag,j;
char a[30]={'\0'};
char b[]="This is a dog";
printf("enter string \n");
gets(a);
int p = strlen(b);
for(j=0;j<p;j++){
if(a[j]==b[j]){
flag=0;
}else{
flag=1;
break;
}
}
if(flag==0)
printf("yes");
else
printf("no");
return 0;
}
答案 5 :(得分:0)
可能有用:{{3p>
答案 6 :(得分:0)
应该是这样的:
for(j=0;j<p;j++)
{
if(a[j]==b[j])
{
flag=0;
}
else
{
flag=1;
break;
}
}
if(flag==0)
printf("yes");
else
printf("no");