c/c++面试题(8)memcopy/memmove/atoi/itoa
1.memcpy函数的原型:
void* memcpy(void* dest,cosnt void* src,size_t n);
返回值:返回dest;
功能:从源内存地址src拷贝n个字节到dest内存地址.
这里必须要求源地址的内存和目标地址的内存没有覆盖,如果有覆盖结果是未定义的.
#include <stdio.h>
#include <assert.h>
void* my_memcpy(void* dest,const void* src,size_t n)
{
assert(dest != NULL && src != NULL && n > 0);
char* dest_t = (char*)dest;
const char* src_t = (char*)src;
while(n--)
*dest_t++ = *src_t++;
return dest;
}
int main(void)
{
char str[] = "abcedf";
char buf[] = "aaaaaaaa";
my_memcpy(str,buf,sizeof(str));
printf("%s\n",(char*)str);
return ;
}
2.memmove的原型:
void* memmove(void* dest,const void* src,size_t n);
和memcpy的功能差不多,只是多了一层考虑内存有覆盖的情况.
如果dest比src小,就从低地址开始拷贝.
如果dest比src大,就从高地址开始拷贝.
如果dest和src一样,就不拷贝.
#include <stdio.h>
void* my_memmove(void* dest,const void* src,size_t n)
{
char* d = (char*)dest;
const char* s = (char*)src;
if( d < s) //start copying at begining while dest is little
{
while(n--)
*d++ = *s++;
}
else if(d > s) //start copying at end while dest is bigger
{
d += n - ;
s += n - ;
while(n--)
*d-- = *s--;
}
return dest;
}
3.atoi的原型:
int my_atoi(char* pstr)
功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号
才开始做转换,而遇到非数字或字符'\0'结束转换,并将结果返回.(返回转换后的整型数);
#include <stdio.h>
#include <assert.h>
int my_atoi(char* pstr)
{
assert(pstr != NULL);
int res = ;
int sign = ;
while(*pstr == ' '|| *pstr == '\t')
pstr++;
sign = (*pstr == '-'? - : ); /*求得符号位置*/
if(*pstr == '-' || *pstr == '+') /*跳过符号位置*/
pstr++;
while(*pstr != '\0' && *pstr >= '' && *pstr <= '')
{
res = *pstr - '' + res*;
pstr++;
}
return sign*res; /*返回带符号的值*/
}
int main(void)
{
char a[] = "-110000";
char b[] = "";
int c = ;
c = my_atoi(a);
printf("%d\n",c);
c = my_atoi(b);
printf("%d\n",c);
return ;
}
4.itoa的原型:
c/c++面试题(8)memcopy/memmove/atoi/itoa的更多相关文章
- 转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现
C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. ...
- atoi&itoa
char* itoa(int num,char*str,int radix) {/*索引表*/ char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVW ...
- [经典] atoi && itoa
atoi原型:int atoi(const char *nptr) atoi,需要考虑的内容: 1. 第一个字符为"-"时为负,系数为-1:为"+"时为正,系数 ...
- 访谈将源代码的函数 strcpy/memcpy/atoi/kmp/quicksort
一.社论 继上一次发表了一片关于參加秋招的学弟学妹们怎样准备找工作的博客之后,反响非常大.顾在此整理一下,以便大家复习.好多源自july的这篇博客,也有非常多是我自己整理的.希望大家可以一遍一遍的写. ...
- 面试必会函数源代码 strcpy/memcpy/atoi/kmp/quicksort
http://blog.csdn.net/liuqiyao_01/article/details/26967813 二.stl模板函数 1.strcpy char * strcpy( char *st ...
- 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...
- 疫情下的在线上课方案:QQ直播+蓝墨云班课
目录 疫情下的在线上课方案:QQ群视频(腾讯课堂)+蓝墨云班课 使用QQ进行直播 材料 QQ直播步骤 其他问题 使用蓝墨云班课加强学习效果 教材问题 我的直播-小学生硬笔书法基础 我的直播 - C程序 ...
- c/c++ 数字转成字符串, 字符串转成数字
c/c++ 数字转成字符串, 字符串转成数字 ------转帖 数字转字符串: 用C++的streanstream: #include <sstream> #Include <str ...
- boost::lexical_cast
boost::lexical_cast为数值之间的转换(conversion)提供了一揽子方案,比如:将一个字符串"转换成整数123,代码如下: "; int a = lexica ...
随机推荐
- x265,帧内预测代码分析
void Analysis::compressIntraCU(const CUData& parentCTU, const CUGeom& cuGeom, uint32_t& ...
- Java中如何获取spring中配置文件.properties中属性值
通过spring配置properties文件 1 2 3 4 5 6 7 8 9 <bean id="propertyConfigurer" class="co ...
- HTML5 十大新特性(八)——Web Worker
由于js是单线程的,所以H5添加了这个叫做webWorker的概念,允许js创建多个线程,但是子线程完全受主线程控制,且不能操作DOM,从而来处理一些比较耗时的操作. 那么如何创建一个子线程呢?通过这 ...
- 浅谈android binder机制
binder机制 是谷歌优化在android上更适合终端的IPC(多进程通信方式),满足系统对通信方式,传输性能和安全性的要求. 特性: 1. 用驱动程序来推进进程间的通信.2. 通过共享内存来提高性 ...
- tsql语句分析工具 转
一款好用且免费的语句分析工具 在调优过程中的查询语句优化阶段,分析语句的执行计划是必经之路,一款好的执行计划分析工具确实可以帮助我们事半功倍 一款名为“Plan Explorer“,自己用的挺爽,不私 ...
- jquery trigger 触发事件小计 -- 关于a标签
jquery -- trigger触发执行事件方法虽然好用,偶尔也会出些小问题. 在最近得一个项目中需要触发a标签的点击事件时,我就遇到了点小问题.我很想当然的写层这样:$("a" ...
- 重温Javascript第一章
一.script标签 script标签有6个属性,其中一个废弃,五个可选. 按照传统的写法,<script>的标签都是放在<head>元素中,但是在<head>中包 ...
- mybatis输出SQL
1.导包 下载一个log4j-1.2.17.jar,放到WEB-INF的lib下,并加入build path 2.创建配置文件 在src下创建log4j.properties,填入以下内容: log4 ...
- C plus plus study note (one)
What is an object ? Object = Entity ; Object may be -- visible or -- invisible Object is variable in ...
- 四种主要网络IO虚拟化模型
本文主要为大家简要介绍VMware.Redhat.Citrix.Microsoft主要虚拟化厂商使用的4种主要的虚拟化IO模型 (emulation.para-virtualization.pass- ...