当前位置: 代码迷 >> C语言 >> [求助]是否有逻辑问题?
  详细解决方案

[求助]是否有逻辑问题?

热度:190   发布时间:2007-09-27 21:15:18.0
[求助]是否有逻辑问题?

char* strstr_bin(char* str, char* part, int str_len, int part_len)
{
int i = 0; // 这里改为 int k = 0;
while (i < str_len)
{
int i = 0; //这里改为 int i = k;
int j = 0;
while ((i<str_len) && (j<part_len))
{
if (str[i] != part[j])
break;

i++;
j++;

if (j == part_len)
return str+i-part_len;
}

i++;          //K++
}

return NULL;
}
  是求这PART在STR中出现的位置并读出程序的一部分
        谢谢大家

[此贴子已经被作者于2007-9-28 9:46:47编辑过]

搜索更多相关的解决方案: 逻辑  

----------------解决方案--------------------------------------------------------
以下是引用万兽无缰在2007-9-27 21:15:18的发言:

char* strstr_bin(char* str, char* part, int str_len, int part_len)
{
int i = 0;
while (i < str_len)
{
int j = 0;
while ((i<str_len) && (j<part_len))
{
if (str[i] != part[j])
break;

i++;/*这里存在错误,当break跳出这个循环的时候,i的值没有被返回来*/
j++;

if (j == part_len)
return str+i-part_len;
}

i++;
}

return NULL;
}
  是求这PART在STR中出现的位置并读出程序的一部分
        谢谢大家



----------------解决方案--------------------------------------------------------

我帮楼主改了下程序,先把i暂存起来,然后在break语句之前重置i

char* strstr_bin(char* str, char* part, int str_len, int part_len)
{
int i = 0;
int i_temp;
while (i < str_len)
{
i_temp=i;//暂存i
int j = 0;
while ((i<str_len) && (j<part_len))
{

if (str[i] != part[j])
{
i=i_temp;//重置i
break;
}

i++;
j++;

if (j == part_len)
return str+i-part_len;
}

i++;
}

return NULL;
}
 


[此贴子已经被作者于2007-9-27 21:47:22编辑过]


----------------解决方案--------------------------------------------------------
谢谢静思了
不过我自己想了下,这样写对么?
修改的在原程序上红色部分

[此贴子已经被作者于2007-9-28 9:43:56编辑过]


----------------解决方案--------------------------------------------------------
没人顶啊,自己顶
----------------解决方案--------------------------------------------------------

没人看啊 ,难道是没问题?


----------------解决方案--------------------------------------------------------
  相关解决方案