oj字符串匹配问题
Description设计一个程序,从一个主字符串中查找一个子字符串在主串中第一次出现的位置。主串和子串的长度不超过100。如果找不到,则输出-1.
Input
第一行输入一个整数N,说明需要进行匹配的实例数。
第二行输入第一组需要进行匹配的主串
第三行输入第一组需要匹配的子字符串。
以下各行按照上面两行的格式输入,直到输入了N组匹配实例。
Output
输出N行,每行显示对应的匹配组中子串在主串中第一次出现的位置。
Sample Input
Original Transformed
3
abaaaaaa
a
bacdeagb
ac
aaaa
bb
3[EOL] abaaaaaa[EOL] a[EOL] bacdeagb[EOL] ac[EOL] aaaa[EOL] bb[EOL] [EOF]
Sample Output
Original Transformed
1
2
-1
我写的程序是
#include<stdio.h>
#include<string.h>
int cmop(char *p, char *q)
{
int flag = 0,t=0;
for (int i = 0,j=0;j < strlen(p);)
{
if (*(p + j) == *(q + i))
{
if(t==0)t = j+1;
if (i == strlen(q)-1)return t;
i++;j++;flag = 1;
}
else
{
i = 0;j++;flag = 0;t = 0;
}
}
if (flag == 0)return -1;
}
int main()
{
char str[100],str1[100];
int n,flag=0;
scanf("%d", &n);
while (n--)
{
memset(str, 0, sizeof(str));
memset(str1, 0, sizeof(str1));
scanf("%s", str);
//char ch = getchar();
scanf("%s", str1);
printf("%d\n", cmop(str, str1));
}
return 0;
}
答案错,为什么?