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 ...
随机推荐
- 阿里巴巴、美团等各大互联网公司的 Java类 校招对本科生有什么要求?
转载: 阿里巴巴.美团等各大互联网公司的 Java类 校招对本科生有什么要求?
- MP3光标移动
#include<iostream> #include<string.h> using namespace std; int main() { int N; cin>&g ...
- appium 1.6.3+Xcode运 For Mac
1. 下载两个版本的Xcode, Xcode 1.7.3 与Xcode 8.2 ,放置在不同的目录下.进入terminal, 选择需要的版本: sudo xcode-select -switch // ...
- Sprint1(第二天11.15)
Sprint1(第二天11.15) Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http:// ...
- windows 服务实例
参考来源:http://blog.csdn.net/morewindows/article/details/6858216 参考来源: http://hi.baidu.com/tfantasy/ite ...
- selenium遇到readonly元素的输入
方法:去掉该元素的readonly属性 使用js来去掉 ((JavaScriptExecutor ) driver).executeScript($("input#{放置元素的CLASS}[ ...
- Hbase关于Java常用API举例
1. HBase相关对Admin操作的的API封装在HBaseAdmin中,封装了HBase常用操作的API 使用方法: pom.xml <!-- https://mvnrepository.c ...
- nodejs新建服务器
var http = require('http');// var optfile = require('./models/optfile'); http.createServer(function ...
- android intent和intent action大全
1.Intent的用法:(1)用Action跳转1,使用Action跳转,如果有一个程序的AndroidManifest.xml中的某一个 Activity的IntentFilter段中 定义了包含了 ...
- android 中调用接口发送短信
android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getD ...