#include <iostream>
#include <cstring>
using namespace std;
int main(void)
{
int lena, lenb;
char a[1010220], b[20];
fgets(b, 20, stdin);
lenb = strlen(b);
b[lenb-1] = 0;
for (int i = 0; i <= lenb-1; i++)
b[i] = tolower(b[i]);
fgets(a, 1010220, stdin);
lena = strlen(a);
strcat(a, " ");
for (int i = 0; i <= lena - 1; i++)
a[i] = tolower(a[i]);
char* q = NULL;
for (int i = 0; ;)
{
char *p = strstr(a, b);
if (p == NULL)
{
printf("-1");
break;
}
else
{
if (*(p + lenb - 1) == ' ' && *(p - 1) == ' ')
{
i++;
if (i == 1)
q = p;
}
*p = 'a';
if (strstr(a, b) == NULL)
{
if (i == 0)
printf("-1");
else
printf("%d %d", i, int(q-a));
break;
}
}
}
return 0;
}
我的这个代码是ac了的,但是在VS、codeblocks、dev上运行第五个测试点的时候,输出的是11 163。改了数组大小,换了输入内容,换用了输入函数之后,第一个输出始终是11。在debug的时候发现是复制的测试点输入会提前出现一个\n,这是为什么呢?