面试: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. ...
随机推荐
- Elasticsearch 在 windows 和 ubuntu 下详细安装过程
1. 前言 作为一名 .NET 平台开发者,选择开发框架时总会面临更多的局限性,不过对于搜索这种刚需服务来说,开源框架可供选择的余地还是比较大的.笔者之前用的是 Lucene.net ,现在深感其使用 ...
- 理解load averages
今天在客户的生产环境中遇到了网络丢包的问题,但是查看我方部署smokeping监控发现对同一条线路监控,我方监控显示正常,判断丢包是由客户服务器负载过高导致,原因及排查思路如下: 使用uptime ...
- SQL SERVER 2014--学习笔记1
--======================================================= 在SQL SERVER 2014中,最吸引眼球的就是内存表和本地编译存储过程,在MS ...
- ASP.NET MVC 富文本Ueditor编辑 后台传值前端乱码解决方案
只是将当前内容String当成Html插入,我想是跟数据类型转换差不多 //把内容赋值给ueditor var ue = UE.getEditor('editor');//实例化 ue.ready(f ...
- Python对excel表格的操作.
参考博客: https://blog.csdn.net/lmj19851117/article/details/78814721 ####一.excel的读取操作xlrd#### import xlr ...
- IDEA批量修改变量名操作
批量修改变量名操作:shift+F6选中变量---->修改变量---->Enter回车
- 792. Number of Matching Subsequences
Given string S and a dictionary of words words, find the number of words[i] that is a subsequence of ...
- Good Bye 2017 G. New Year and Original Order
G. New Year and Original Order time limit per test 2 seconds memory limit per test 256 megabytes inp ...
- Java对象的大小及应用类型
基础类型数据的大小是固定的,对于非基本类型的java对象,其大小就值得商榷了. 在java中一个空Object对象的大小是8byte,这个大小只是保存堆中没有任何属性的对象的大小,看下面的语 ...
- CDN添加流程
CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各处放置节 ...