使代码在字符串C中找到第一个整数

时间:2014-03-04 18:01:59

标签: c string

您好我正在做一个软件,在字符串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

感谢那些能够理解问题并帮助我解决问题的人,我非常感激

2 个答案:

答案 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);

}