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 ...
随机推荐
- angular 路由请求js文件
<script type="text/javascript" src="http://apps.bdimg.com/libs/angular.js/1.3.2/an ...
- Python_Day4_函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 定义: 函数是指将一组语句的集合通过一个名字( ...
- RDLC开发笔记
1.当报表中使用FormatPercent求百分数时,若分母有小数,务必使用CDbl将其转为double类型,否则会报“错误号”.
- zookeeper、kafka、storm install
安装顺序 zookeeper,kafka,storm install zookeeper 1.上传tar包,解压tar tar -zxvf zookeeper-3.4.6.tar.gz 2.复制 ...
- table清除样式大全
table{width:100%;text-align:center;border-collapse:collapse;border-spacing:1;border-spacing:0; }tabl ...
- SPSS数据分析—Poisson回归模型
在对数线性模型中,我们假设单元格频数分布为多项式分布,但是还有一类分类变量分布也是经常用到的,就是Poisson分布. Poisson分布是某件事发生次数的概率分布,用于描述单位时间.单位面积.单位空 ...
- Hadoop集群配置过程中需要注意的问题
环境:VMwareWorkstation8.0 和 Ubuntu14.04 1. 使用三台虚拟机搭建Hadoop集群 2. 一定要在每台机器上配置ssh免密码登录 3. 由于需要给/etc/hosts ...
- CProgressCtrl进度条
CProgressCtrl进度条 使用方法总结 标签: CProgressCtrlmfc 2016-03-03 09:19 762人阅读 评论(0) 收藏 举报 分类: MFC(11) 版权声明: ...
- js数据类型
JavaScript数据类型是非常简洁的,它只定义了6中基本数据类型 null:空.无.表示不存在,当为对象的属性赋值为null,表示删除该属性 undefined:未定义.当声明变量却没有赋值时会显 ...
- Python’s SQLAlchemy vs Other ORMs[转发 7] 比较结论
Comparison Between Python ORMs For each Python ORM presented in this article, we are going to list t ...