c语言String的实现(二)

2013-07-22 17:58:37 · 作者: · 浏览: 511

 

  void StrCpy(String *dest,String src){

  *dest = StrMake(StrLen(src));

  String temp = *dest;

  while(*src){

  *temp++=*src++;

  }

  *temp = 0;

  }

  void StrFree(String *str){

  free(*str);

  *str = 0;

  }

  Status StrPrint(String str){

  CHECK(str);

  puts(str);

  return TRUE;

  }

  String StrTok(String dest,String src){

  if(dest)StrCpy(&STRBUFFER,dest);

  CHECK(src&&STRBUFFER&&*STRBUFFER);

  int length = StrLen(src);

  String ch = StrChr(src, *STRBUFFER, length);

  if(*ch == *STRBUFFER){

  do{

  *STRBUFFER++='\0';

  CHECK(*STRBUFFER);

  ch = StrChr(src, *STRBUFFER, length);

  }while(*ch == *STRBUFFER);

  }

  String result = STRBUFFER;

  String temp = result;

  while(*temp) {

  ch = StrChr(src, *temp, length);

  if (*ch == *temp) {

  *temp++ = '\0';

  CHECK(*temp);

  break;

  }else{

  temp++;

  }

  }

  STRBUFFER = temp;

  return result && *result result : 0;

  }

  String StrStr(String dest,String src){

  CHECK(dest&&src&&*dest&&*src);

  do{

  String temp = src,rt = dest;

  while(*temp == *rt){

  temp++;rt++;

  }

  if(!*temp)return dest;

  CHECK(*rt);

  dest++;

  }while(*dest);

  return 0;

  }