笔试中最常见的string相关函数

strcpy:题目:已知strcpy函数的原型是:

char * strcpy(char * strDest,const char * strSrc);

1.不调用库函数,实现strcpy函数。

2.解释为什么要返回char *。

解答:

1.

char *strcpy(char *strDestination, const char *strSource)

{

    assert(strDestination && strSource);

    char *strD=strDestination;

    while ((*strDestination++=*strSource++)!='\0')

        NULL;

    return strD;

}

  

2.为了实现链式调用:strcpy(b,strcpy(c,a))



Strstr:返回heyStack中第一个与needle匹配的地址
char * mystrstr(char* heyStack,char* needle)
{
    //assert(heyStack!=NULL&&needle!=NULL);
    int heyStack_len=strlen(heyStack);
    int needle_len=strlen(needle);
	int i=0;
    if(needle_len>heyStack_len)
		return NULL;
    for(;i<heyStack_len-needle_len+1;i++){
		int j=0;
		for(;j<needle_len;j++){
              if(needle[j]!=heyStack[i+j])
				  break;
		}
		if(j==needle_len)  return &heyStack[i];
	}  
	return NULL;
}

  


strcat:在目标字符串的末尾添加源字符串
char* strcat(char* dest,const char* source)
{
     assert(dest!=NULL&&source!=NULL);
     char* destTemp=dest;
     char* sourceTemp=source;
     while(*destTemp++!='\0');
          destTemp--;
     while((*destTemp++=*sourceTemp++)!='\0');
     return dest;
}

  

strrev:颠倒字符串
char* strrev(char* dest )
{
     assert(dest!=NULL);
     char* temp=dest;
     char* result=new char[strlen(dest)+1];
     char* resultTemp=result;
     while(*temp++!='\0');
     temp--;
     int count=strlen(dest);
     while(count--)
          *resultTemp++=*temp--;
      *resultTemp='\0';
      return result;
}

  

原文地址:https://www.cnblogs.com/cherri/p/2074915.html