这是地址出错了还是怎么回事,求解决办法(内附注释)
查看原帖
这是地址出错了还是怎么回事,求解决办法(内附注释)
790685
bluetored楼主2022/10/6 13:15
#include <stdio.h>
#include <string.h>
int main ()
{
	int cnt=0;
	char are[1000000];
	char cmp[11],word[11];//cmp作为记录并比较的数组 
	gets (word);
	gets (are);
	for (int i=0;i<strlen(word);i++){
		if(word[i]>='A'&&word[i]<='Z'){
			word[i]+=32;
		}
	}
	for (int i=0;i<strlen(are);i++){
		if(are[i]>='A'&&are[i]<='Z'){
			are[i]+=32;
		}
	}
	//把大写全换成小写 
	for (int i=0;i<strlen(are);i++)
	{
		if(i==0)//第一次没有空格,所以单独讨论了一次 
		{
			for (int j=0;j<strlen(word);j++)
		    cmp[j]=are[i+j];//在这里出现了问题 ,我在调试里发现虽然执行完这一步cmp和word内的元素是一样的字母,但word后面是\000而cmp后面是\377这直接导致了我的strcmp函数判断不成功 
			if(strcmp(cmp,word)==0) cnt++;
		}
		else if(are[i]==' ')//一个单词的前一个和后一个字符肯定是空格 
		{
			for (int j=0;j<strlen(word);j++)
			cmp[j]=are[i+j+1];
			if((strcmp(cmp,word)==0&&are[i+1+strlen(word)]==' ')||(strcmp(cmp,word)==0&&are[i+1+strlen(word)]=='\0')) cnt++;
		}
	}
	printf ("%d",cnt);
	return 0;
}
2022/10/6 13:15
加载中...