面试:C/C++常见库函数实现
1. void *mymemcpy(void *dest, const void* src, size_t n);
内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
void* memcpy(void* dest,void* src,size_t n){
assert(dest != NULL && src != NULL);
if(src < dest && (char*)src + n > dest){
char* pdst = (char*)dest+n-;
char* psrc = (char*)src+n-;
while(n--){
*pdst-- = *psrc--;
}
}else{
char* pdest = (char*)dest;
char* psrc = (char*)src;
while(n--){
*pdest++ = *psrc++;
}
}
return dest;
}
2.void *memset(void *s, int c, size_t n);
void* memset(void* src,int c,size_t n){
assert(src != NULL);
char* psrc = (char*)src;
while(n--){
*psrc++ = (char)c;
}
return src;
}
3. char* strcpy(char* dest,const char* src);
char* strcpy(char* dest,const char* src){
assert(dest != NULL && src != NULL);
size_t n = strlen(src);
if(src < dest && src + n > dest){
char* pdst = dest + n;
*pdst-- = '\0';
src = src + n - ;
while(n--){
*pdst-- = *src--;
}
}else{
char* pdst = dest;
while((*pdst++ = *src++) != );
}
return dest;
}
4. char* mystrncpy(char* dest,char* src,size_t n);
char* strncpy(char* dest,const char* src,size_t n){
assert(dest != NULL && src != NULL);
if(src < dest && src + n > dest){
int m = strlen(src) < n ? strlen(src):n;
char* pdst = dest+m;
*pdst-- = '\0';
src = src + m-;
while(m--){
*pdst-- = *src--;
}
}else{
char* pdst = dest;
size_t i = ;
while(i++ < n && (*pdst++ = *src++) != '\0');
if(*(pdst-) != '\0') *pdst = '\0';
}
return dest;
}
5.char* strcat(char* dest,const char* src)
char* strcat(char* dest,const char* src){
assert(dest != NULL && src != NULL);
char* pdst = dest;
while(*pdst != '\0'){
pdst++;
}
while((*pdst++ = *src++) != '\0');
return dest;
}
6.int strcmp(const char* s1,const char* s2)
int strcmp(const char* s1,const char* s2){
assert(s1 != NULL && s2 != NULL);
while(s1 && s2 && *s1 == *s2){
s1++;
s2++;
}
return *s1 - *s2;
}
7.size_t strlen(const char* s)
size_t strlen(const char* src){
assert(src != NULL);
size_t ret = ;
while(*src++ != '\0'){
ret++;
}
return ret;
}
面试:C/C++常见库函数实现的更多相关文章
- Android开发面试经——6.常见面试官提问Android题②(更新中...)
版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/fi ...
- Android开发面试经——5.常见面试官提问Android题①
版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...
- Android开发面试经——4.常见Android进阶笔试题(更新中...)
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...
- Android开发面试经——3.常见Java基础笔试题
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...
- Android开发面试经——2.常见Android基础笔试题
标签: androidAndroid基础Android面试题Android笔试题 2015-03-12 15:04 3361人阅读 评论(3) 收藏 举报 分类: Android开发(29) 版 ...
- http协议详解及htt面试题目,常见的http状态码
http协议详解及htt面试题目,常见的http状态码 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP ...
- (转)(HR面试)最常见的面试问题和技巧性答复
(HR面试)最常见的面试问题和技巧性答复 1.请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验,这些在简历上都有.其实,企业最希望知道的是求职者能否胜任工 ...
- Android开发面试经——1.常见人事面试问题
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 做为程序员,我们都是有梦想的人,有时候当我 ...
- Java求职面试准备之常见算法
最近在求职面试,整理一下常见面试算法: 对TestAlgorithms.java中方法的测试见JunitTestAlgorithms.java(引入了junit4) 1.TestAlgorithms. ...
随机推荐
- Alpha阶段项目复审(小小大佬带飞队)
Alpha阶段项目复审 小组的名字 优点 缺点,bug报告(至少140字) 最终名次(无并列) 只会嘤嘤嘤队 题材比较新颖!游戏和记单词的结合 有浏览器不兼容问题 5 GG队 样式新颖,自动导入好评 ...
- .NET 调试入门(三)常用的命令
windbg ANSI Command Tree 1.0 title {"Crash Dump Analysis Checklist"} body {"Crash Dum ...
- LeetCode150:Evaluate Reverse Polish Notation
题目: Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are + ...
- CodeFirst迁移注意点
Context构造函数不检查__MigrationHistory 取消当数据库模型发生改变时删除当前数据库重建新数据库的设置.Database.SetInitializer<Context> ...
- sql server生成自动增长的字母数字字符串
在开发的过程中,我们经常会遇到要生成一些固定格式字符串,例如“BX201903150001”,结构为:BX+日期+N位序号,类似这种的字符串我们很难生成,在这里我们借助一个存储过程来实现这个功能. 1 ...
- Handler主线程和子线程相通信
//创建主线程的handlerprivate Handler handler = new Handler(){ @Override public void handleMessage(Message ...
- bonjour browser 下载
在Mac 上叫 Bonjour Browser http://www.macupdate.com/app/mac/13388/bonjour-browser/download IOS 上的 app 叫 ...
- firebug中html显示为灰色的原因总结
1.被设置了display:none. 2.长.宽都为0.
- P2149 Elaxia的路线
P2149 Elaxia的路线 题意简述: 在一个n(n<=1500)个点的无向图里找两对点之间的最短路径的最长重合部分,即在保证最短路的情况下两条路径的最长重合长度(最短路不为一) 思路: 两 ...
- 设置User Agent
公司的前端要给项目的webview加一个区分,用来区别是iOS端访问.android访问还是在浏览器访问的,说是要加一个User Agent ,前端根据不同信息做适配,和我说来一头雾水,后来经过开发同 ...