笔试面试题12--字符串拷贝、链接、比较无库函数实现
2016-05-14 15:37
176 查看
面试案例1:字符串拷贝函数问题。(不调用库函数)
面试案例2:字符串链接问题。(不调用库函数)
面试案例3:字符串比较问题。(不调用库函数)
面试案例4:字符串长度问题。(不调用库函数)
宏 assert 经常用于在函数开始处检验传入参数的合法性,可以将其看作是异常处理的一种高级形式。assert 的作用是先计算表达式expression,然后判断:
如果表达式值为假,那么它先向stderr打印错误信息,然后通过调用 abort 来终止程序运行。
如果表达式值为真,继续运行后面的程序。
注意:assert只在 DEBUG 下生效,在调试结束后,可以通过在#include
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
相关文章推荐
- 笔试面试题11--整数与字符串转化
- 链表试题及解法
- 面试题2
- 面试题 5
- 面试题 4
- 微软预科生计划skype在线面试题
- 笔试面试题10--特殊指针
- 笔试面试题9--指针和引用的区别
- 面试题 3
- 笔试面试题8--内联函数和宏的区别
- 纯干货!面试官如何面试程序员
- 如何判断自己是否具有成为一名优秀程序员的潜质
- 面试题3
- 面试题1
- 面试题
- Volley源码解析——从实现角度深入剖析volley
- 2014 amazon 在线 面试题目 爬山问题:打印出从A点到B点的距离
- 公司面试题目 打印矩阵,先往右打印,到头然后向左下打印,到头然后向左打印,最后向上打印
- 拉低程序员社会地位的十大因素
- 程序员的自我修养 读书笔记03