面试遇到的字符串操作
2016-09-23 08:49
232 查看
1.实现memcpy函数
memcpy函数:c语言内存拷贝函数,使用参数为void*,以及需要拷贝内存的长度,以字节为单位。
本身memcpy没有考虑过内存的重叠问题,所以只需要保证需要复制的内容,复制到相应的目的地址就行了。
这里注意第二个参数是const void*
以及在运算过程当中的,char* 类型的转换。
2.memmove 函数的实现
当两个区间的尾部重叠的时候,我们从头部开始复制。
当两个区间的头部重叠的时候,我们从尾部开始复制。
3.strcpy的实现
复制的时候需要注意最后的’\0’也需要复制到目标地址当中。
4.strncpy的实现
strncpy是拷贝特定数量的字符到目的地址。
如果目标地址空间比较大,需要把源地址的所有字符复制到目标地址当中,并且置目标地址后部分内容为 ”\0”
如果目标地址空间太小,那么出现不可知的问题。第二个for 不会执行。
4000
memcpy函数:c语言内存拷贝函数,使用参数为void*,以及需要拷贝内存的长度,以字节为单位。
本身memcpy没有考虑过内存的重叠问题,所以只需要保证需要复制的内容,复制到相应的目的地址就行了。
void* memcpy(void* des,const void* src,size_t len){ char* d = (char*)des; char* s = (char*)src; while(len--) *d++ = *s++; return dest; }
这里注意第二个参数是const void*
以及在运算过程当中的,char* 类型的转换。
2.memmove 函数的实现
void* memmove(void* dest,const void* src,size_t len){ char* d= des; char* s = src; if(d < s){ /*it will be OK even if there is a overlap that do not * start from the start:dest */ while(len--) *d++= *s++; }else{// dest is bettwen src and src + len - 1 , //there is a overlap between [dest ,dest+len) with [src,src+len) /**we should copy from the **end of the src that is src + len - 1; **/ char* lasts = s + (len - 1); char* lastd = d +(len - 1); while(len--) *lastd -- = *lasts--; } return dest; }
当两个区间的尾部重叠的时候,我们从头部开始复制。
当两个区间的头部重叠的时候,我们从尾部开始复制。
3.strcpy的实现
char* strcpy(char* dest,const char* src){ char* d = dest; char* s = src; while( (*d++ = *s++) !='\0' );//把\0 也给复制了 return dest; }
复制的时候需要注意最后的’\0’也需要复制到目标地址当中。
4.strncpy的实现
char* strncpy(char* dest,const char* src,size_t n){ size_t i; for(i=0;i<n && s[i] !='\0';++i) dest[i] = src[i]; for(;i < n;++i) dest[i] = '\0'; }
strncpy是拷贝特定数量的字符到目的地址。
如果目标地址空间比较大,需要把源地址的所有字符复制到目标地址当中,并且置目标地址后部分内容为 ”\0”
如果目标地址空间太小,那么出现不可知的问题。第二个for 不会执行。
4000
相关文章推荐
- 数据库链接字符串查询网站
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- Flex字符串比较 还有Flex字符串操作
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- 字符串聚合函数(去除重复值)
- Ruby中的字符串编写示例
- 总结的5个C#字符串操作方法分享
- sqlserver中求字符串中汉字的个数的sql语句
- sql server字符串非空判断实现方法
- C#算法函数:获取一个字符串中的最大长度的数字
- VBS的字符串及日期操作相关函数
- C#实现将千分位字符串转换成数字的方法
- jquery 删除字符串最后一个字符的方法解析
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)