南开百题
编写一个函数findStr(char *str,char *substr),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。
函数ReadWrite()实现从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。
注意:部分源程序存在文件prog1.c中。
请勿改动主函数main()和其它函数中的任何内容,仅在函数findStr()的花括号中填入你编写的若干语句。
int findStr(char *str,char *substr)
{ int i,j,len1,len2,cnt=0,flag;
len1=strlen(str);
len2=strlen(substr);
for(i=0;i<len1;i++)
{ for(j=0;j<len2;j++)
if(str[i+j]==substr[j]) flag=1;
else {flag=0;break;}
if(flag==1) cnt++;
}
return cnt;
}
这句我不理解 if(str[i+j]==substr[j])
str[i+j]表示的是在str中第i+j个与substr的第i个怎么会相等?
参考答案:没有错啊
比如substr[0] ='a' substr[1]='b'
str[i+0]=substr[0]正是定位到了字符相同的地方
如果str[i+1]=substr[1]就说明有一个子串
可以cnt++