在C中查找其他字符串和打印位置内的字符串

时间:2013-12-03 20:38:16

标签: c string

我正在尝试在另一个字符串中搜索一个字符串(“arm”,例如“karma”)。

如果匹配,我将FOUND at (index)打印到控制台(这里的“索引”是从0开始的字母数。)

否则,我打印NOT FOUND。现在,控制台接受两个输入,然后退出。这是我到目前为止所得到的:

int main() 
{
    char string1[10];
    char string2[10];

    printf("Write first string:  ");
    scanf("%s", string1);
    printf("Write second string:  ");
    scanf("%s", string2);

    for (int i = 0; string1[i] != 0; i++)
    {
        if (string1[i] == string2[0]) 
        {
            for (int j = 0; string2[j] == string1[i + j]; j++)
            {
                if (string2 == '\0') 
                {
                    printf("FOUND at %d", i);
                }
            }
        }

        if (string1[i] == '\0')
        {
            printf("NOT FOUND");
        }
    }

    return 0;
}

我提前为缺少子程序而道歉。我是超级的,对所有这些都是超级新手。

3 个答案:

答案 0 :(得分:4)

strstr()将完全按照您的意愿行事。

答案 1 :(得分:2)

如果NOT FOUND退出外循环而不打印任何内容,则永远不会满足string1[i] != 0条件。
如果你在外部循环之外移动该检查(你需要在循环之前定义i,在函数上下文中),你就可以点击它。

此外,你FOUND案例应该突破外部循环(请注意,简单的break是不够的),否则你也会遇到NOT FOUND案例

答案 2 :(得分:2)

您可以使用strstr()吗?

示例:

char *str = "karma";
char *pChPos;

pChPos = strstr(str, "arm");

if(pChPos)
    printf("Found \"arm\" at position %td\n", pChPos - str);
else
    printf("Didn't find it!\n");