木香顺气丸和保和丸:这段C语言的程序里的第2排的“flag”是什么意思?

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 06:06:56
这段C语言的程序里的第2排的“flag”是什么意思?有什么作用呢?
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;
}
什么是“标志位”?

它就是一个变量,是用来判断符合哪个条件的.当等于1是是说明str[i+j]==substr[j];0时是说明不满足上面的要求的...
其实在这个程序里这个是多余的,程序可以改为:
int findStr(char *str,char *substr)
{ int i,j,len1,len2,cnt=0;
len1=strlen(str);
len2=strlen(substr);
for(i=0;i<len1;i++)
{ for(j=0;j<len2;j++)
if(str[i+j]==substr[j])cnt++;
}
return cnt;
}

标志位

if(flag==1) cnt++;
这条语句判断用的

就是做一个记号,在数据结构中经常用的,尤其是树和图的部分,用来区分是否已经访问过该点