c语言的问题 tk165改错

来源:百度知道 编辑:UC知道 时间:2024/05/28 08:52:06
gc165.c 程序中的函数find_str()用来返回字符串s2在字符串s1中第一次出现的首地址;如果字符串s2不是s1的子串,则该函数返回空指针NULL。
现在程序中发现有两个错误,错误就出现在那些注释行的附近,请你找出错误并将它们改正过来,要求在调试过程中不允许改变程序结构,更不得增删语句。
#include <stdio.h>
#include <string.h>
char *find_str(char *s1,char *s2)
{
int i,j,ls2;
ls2=strlen(s2);
for(i=0;i<=strlen(s1)-ls2;i++)
{
for(j=0;j<ls2;j++) if(s1[j+i]!=s2[j])break;
/* .............. comment one .............. */
if(j==ls2)return(s1+j);
}
return NULL;
}

void main()
{
char *a="dos6.22 windows98 office2000",*b="windows",c;
/* .............. comment two .............. */
c=find_str(a,b);
if(c!=NULL)printf("%s\n",c);
else printf("未找到字符串%s\n",b);
}

#include <stdio.h>
#include <string.h>
char *find_str(char *s1,char *s2)
{
int i,j,ls2;
ls2=strlen(s2);
for(i=0;i<=strlen(s1)-ls2;i++)
{
for(j=0;j<ls2;j++) if(s1[j+i]!=s2[j])break;
/* .............. comment one .............. */
//if(j==ls2)return(s1+j);
if(j==ls2)return(s1+j+1);
}
return NULL;
}

void main()
{
//char *a="dos6.22 windows98 office2000",*b="windows",c;
char *a="dos6.22 windows98 office2000",*b="windows",*c;
/* .............. comment two .............. */
c=find_str(a,b);
if(c!=NULL)printf("%s\n",c);
else printf("未找到字符串%s\n",b);
}