您的位置:首页 > 职场人生

笔试面试题12--字符串拷贝、链接、比较无库函数实现

2016-05-14 15:37 176 查看
面试案例1:字符串拷贝函数问题。(不调用库函数)

char *strcpy(char *strDest, const char *strSrc)
{
assert((strDest != NULL) && (strSrc != NULL));
char *address = strDest;
while((*strDest ++ = *strSrc ++) != '\0');
return address;
}


面试案例2:字符串链接问题。(不调用库函数)

char* strcat(char* des, const char* src)   // const表明为输入参数
{
assert((des!=NULL) && (src!=NULL));
char* address = des;
while(*des != '\0')  // 移动到字符串末尾
++des;
while(*des++ = *src++)
;
return address;
}


面试案例3:字符串比较问题。(不调用库函数)

int strcmp(const char *s1,const char *s2)
{
assert((s1!=NULL) && (s2!=NULL));
while(*s1 == *s2)
{
if(*s1 == '\0')
return 0;

++s1;
++s2;
}
return *s1 - *s2;
}


面试案例4:字符串长度问题。(不调用库函数)

int strlen(const char* str)
{
assert(str != NULL);
int len = 0;
while((*str++) != '\0')
++len;
return len;
}


void assert( int expression );


宏 assert 经常用于在函数开始处检验传入参数的合法性,可以将其看作是异常处理的一种高级形式。assert 的作用是先计算表达式expression,然后判断:

如果表达式值为假,那么它先向stderr打印错误信息,然后通过调用 abort 来终止程序运行。

如果表达式值为真,继续运行后面的程序。

注意:assert只在 DEBUG 下生效,在调试结束后,可以通过在#include
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: