面试中极易出现的函数自实现
1.字符串拼接函数
字符串拼接函数(注意:需要将src的字符串拷贝到dst,所以p必须定义成字符串数组,不能为char 的不可修改的字符串)( %5d 不足五位左补空格。)
#include <stdio.h>
#include <assert.h>
char * my_strcat(char *dst,char const *src)
{
char * ret = dst;
assert((dst != NULL)&&(src != NULL));
while(*dst)
{
dst++;
}
while(*dst++=*src++)
{
}
return ret;
}
int main()
{
char dst[15]="i love ";
char *src = "you!";
printf("%s\n",my_strcat(dst,src));
return 0;
}
2.字符串拷贝函数的实现
#include <stdio.h>
#include <assert.h>
char * my_strcpy(char *dest,const char *src)
{
assert( dest != src);
assert( dest != NULL && src != NULL);
char *temp = dest;
while(*dest++ = *src++);
return temp;
}
int main()
{
char p[50]="LELE";
char *q="hello";
printf("%s\n",my_strcpy(p,q));
return 0;
}
3.字符串比较函数
字符串比较函数的实现(相同则返回0,否则返回第一个不相同的字符ASCII之差)
#include <stdio.h>
#inlcude <assert.h>
int strcmpa (const char *str1,const char *str2)
{
int len = 0;
assert((str1 != '\0') && (str2 != '\0'));
while(*str1 && *str2 && (*str1==*str2))
{
str1++;
str2++;
}
len= *str1-*str2;
if(len == 0)
return 0;
else
{
return len;
}
}
int main()
{
char *p="lelea";
char *q = "lele";
printf("%d\n",strcmpa(p,q));
return 0;
}
这三个函数经常出现在面试题中,因此不得不学会啊。尤其实现的细节尤为重要。