在大字符串中返回一个子字符串的的位置

如果第二个字符串被包含在第一个字符串中,函数就返回被包含的字符串开始的地址。例如string_in(‘’hats‘’,‘’at‘’)返回hats中a的地址,否则返回空指针
#include
using namespace std;
char* search(char *dst,char *src);
void main()
{
	char *string1="yang hai lin is a good person!";
	char *test="i";
	char *a=search(test,string1);
	cout<

下面是参考答案,写的比较诡异

#include 

char *string_in(char *p1, char *p2);

int main(void)
{
    char str1[81];
 char str2[21];
 char *p;
 do
 {
  puts("input range string:");
  gets(str1);
  puts("input match string:");
  gets(str2);
  p = string_in(str1, str2);
  if ( p )
  {
   puts("Find!");
   puts(p);
  }
  else puts("Can't find!");

  puts("input any char except q to go on.");
  gets(str1);
 }
 while(*str1 != 'q');

 puts("Quit.");
    return 0;
}

char *string_in(char *p1, char *p2)
{
 char *p1_save = p1, *p2_save = p2;
 if(*p1 == '\0' || *p2 == '\0') return NULL;
 while(1)
 {
  if(*p1 == *p2)
  {
   if(*++p2 == '\0') return p1_save;
   if(*++p1 == '\0') return NULL;
  }
  else
  {
   if(*++p1 == '\0') return NULL;
   p1_save = p1;
   p2 = p2_save;
  }
 }
}

 


你可能感兴趣的:(初步编程)