想问一下输入问题
查看原帖
想问一下输入问题
664168
Wolnest楼主2022/3/2 16:59
#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,这是为什么呢?

2022/3/2 16:59
加载中...