笔试中最常见的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;
}


浙公网安备 33010602011771号