2 f229338596 F229338596 于 2014.03.10 15:18 提问

c 语言 求子串在主串中的位置
c

写了一个简单的求子串在主串第一次出现的位置的方法

int index(char str[],char substr[]){//求字串第一次出现的位置

int i=0,j=0,num=0;

while(str[i]!='\0'&&substr[j]!='\0'){

   if(str[i]!=substr[j]){

         j=0;i=i+1; num=i;}
   else{ 
        i++;j++;
   }

}
if(substr[j]=='\0')
return num;

肯定有遗漏的情况,希望高手补充,谢谢

2个回答

ly601579033
ly601579033   2014.12.12 18:16

第一:
if(substr[j]=='\0')
return num;
错了,
假如这句话不执行,则没有返回值。

第二:
加入字串1为:11234,字串2为:12
你的代码判断不出来,你可以自己分析一下原因

第三:
一点个人建议,编程风格问题:
不要使用i,j这类的名字了,改为 str1_pos,str2_pos一类的(pos是position简写的)

F229338596
F229338596   2014.12.14 15:10

谢谢啦,编程风格真的很重要的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!