c语言子串位置 描述 输入字符串a和字符串b,并保证b是a的一个子串,输出b在a中第一次出现的位置。 输入 输入两字符串, 并保证b是a的一个子串

怎么写
子串位置
描述
输入字符串a和字符串b,并保证b是a的一个子串,输出b在a中第一次出现的位置。

输入
输入两字符串, 并保证b是a的一个子串

#include <string.h>
#include <stdio.h>
#define N 50050

char a[N], b[N];
int main()
{
    scanf("%s%s", a, b);
    int la = strlen(a), lb = strlen(b);
    for(int i = 0; i <= la-lb; ++i)
        for(int j = 0; j < lb; ++j)
        {
            if(a[i+j] != b[j])
                break;
            if(j == lb - 1)
            {
                printf("%d", i);
                return 0;
            }
        }
    printf("b is not substring of a");
}

img

img

供参考:

#include <stdio.h>
int main()
{
    char str[80], substr[80];
    int i, j, k, flg;
    printf("Input string:");
    gets(str);
    printf("Input substring:");
    gets(substr);
    for (i = 0, flg = 1; flg && str[i] != '\0'; i++){
        for (j = i, k = 0; substr[k] == str[j]; k++, j++)
            if (substr[k + 1] == '\0') {
                printf("%d", i);
                flg = 0;
                break;
            }
    }
    if (flg)
        printf("No substring %s", substr);
    return 0;
}