题目如下: 请编写一个函数findStr(),其功能是:统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:如果输入的字符串为“abkl dwafhjj dafaf safs fs4ddafadkl”,子字符串为“af”,函数的返回值应为5。 整个试题如下(包括答案):
|
我想问的是23行 if (*r == '\0')是什么意思?答案说的是表明子字符串在主串出现了一次,可我怎么也看不明白,请问到底是什么意思?原理.............
题目如下: 请编写一个函数findStr(),其功能是:统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:如果输入的字符串为“abkl dwafhjj dafaf safs fs4ddafadkl”,子字符串为“af”,函数的返回值应为5。 整个试题如下(包括答案):
|
我想问的是23行 if (*r == '\0')是什么意思?答案说的是表明子字符串在主串出现了一次,可我怎么也看不明白,请问到底是什么意思?原理.............
while (*r) 当r没到尾时
if (*r == *p) 如果 r字符与p字符相等
{
r++; 两者都相加
p++;
}
else
{
break; 否则退出
}
if (*r == '\0') 所以,如果到尾部,就是两者一直相等.
n++;
另外,你的算法很标准,但对这题来说,太小题大作了.
给你写个简单的,当然只是针对这题的.
int i,n;
n=strlen(str);
for(i=0;i<n-1;i++)
if(str[i]==substr[0]&&str[i+1]==substr[1])n++;
return n;