您好我正在做一个软件,在字符串1中搜索字符串2中的至少一个字符并打印我们找到的位置。
我的程序中的问题是它打印的值不正确
我的代码 -
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str1[] = "a,s,e,d,8,f";
char str2[] = "1,2,3,4,5,6,7,8,9,0";
int i, j, len1, len2, con = 0;
len1 = strlen(str1);
len2 = strlen(str2);
for (i = 0; i < len1; i++)
{
for (j = 0; j < len2; j++)
{
if (str1[i] == str2[j])
{
break;
}
}
con++;
}
printf("%d", con);
system("PAUSE");
}
返回值应为5,因为8出现在第二个字符串中,位置5
感谢那些能够理解问题并帮助我解决问题的人,我非常感激
答案 0 :(得分:3)
“break”只会打破内部的“j”循环,让外部的“i”循环继续运行。请参阅此文章了解修复方法。 How to break out of nested loops?
答案 1 :(得分:1)
当你找到正确的字符时,只需在','char和标志'find'上添加'continue'指令:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str1[] = "a,s,e,d,8,f";
char str2[] = "1,2,3,4,5,6,7,8,9,0";
int i, j, len1, len2, find = 0, con = 0;
len1 = strlen(str1);
len2 = strlen(str2);
for (i = 0; i < len1; i++)
{
if(str1[i]==',')
continue;
for (j = 0; j < len2; j++)
{
if (str1[i] == str2[j])
{
find = 1;
break;
}
}
con++;
if(find>0)
break;
}
printf("%d\n", con);
}