工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat
对常见的几个函数,周末没事写写,绝对是笔试面试中非频繁,前面n届学长无数次强调了,大家就别怀疑了。从今天开始,每天10道题。
int atoi(const char* str)
{if(str==NULL) return 0;bool sigFlag=true;int i=0;int sum=0;
while(str[i]!='\0')
{if(str[i]=='+')sigFlag=true;else if(str[i]=='-')sigFlag=false;else if(str[i]<='9'&&str[i]>='0'){sum=sum*10+str[i]-'0';}else{}
i++;
}
if(sigFlag==false)sum=0-sum;
return sum;}
以上的有几个要点没注意到,一是没检测溢出,而是没处理好空格,三是诸如a34d5之类的字符串没处理好。
改进后如下:
int atoi(const char* str)
{ if(str==NULL) return 0; bool sigFlag=true; int i=0; int sum=0; while(str[i]==' ') i++;while(str[i]!='\0') { if(str[i]=='+') sigFlag=true; else if(str[i]=='-') sigFlag=false; else if(str[i]<='9'&&str[i]>='0') { sum=sum*10+str[i]-'0'; if((sigFlag && sum>0x80000000)||(!sigFlag && sum>0x7fffffff )){sum=0;break;}} else { break;}
i++;
}
if(sigFlag==false) sum=0-sum;
return sum; }
itoa:
char* itoa(int inputInt)
{if(inputInt<0)inputInt=0-inputInt;int num=inputInt;int i=0;while(inputInt/=10)i++;char* p=new char[i+2];int j=0;int tmp;do{ p[j++]=num%10+'0';num=num/10;}while(num);p[j+1]='\0';for(int k=0;k<(i+1)/2;++k){tmp=p[k];p[k]=p[i-k];p[i-k]=tmp; }
delete []p;
return p;
}
strcpy:
void Strcpy(char* dstStr,const char* srcStr)
{if(srcStr==NULL||srcStr==NULL)return;while(*dstStr++=*srcStr++){}}
memcpy:
void Memcpy(void* pmemTo,const void* pmemFro,int count)
{
if(pmemTo==NULL||pmemFro==NULL) return;
char* pbTo=(char*)pmemTo;
char* pbFro=(char*)pmemFro;
while(count)
{
*pbTo++=*pbFro++;
count--;
}
}
strCmp:
int strCmp(const char* dstStr,const char* srcStr)
{assert(dstStr!=NULL&&srcStr!=NULL);while(*dstStr++==*srcStr++ && *dstStr!='\0')return *dstStr-*srcStr;}
二分查找:
int BinarySearch(int* arr,int n,int key){assert(arr!=NULL);int left,right;left=0;right=n-1;int i=0;int iResult=-1;while(true){i=(right-left)/2;if(right-left==0){if(key==arr[left]) {iResult=left;}break;}else if(key>arr[i]){left=i+1;}else if(key<arr[i]){right=i-1;}else{iResult=i;break;}}return iResult;}
strcat:
char* StrCat(char* dstStr,const char* srcStr){char* strResult=dstStr;while(*dstStr++!='\0'){}dstStr--;while(*dstStr++=*srcStr++);return strResult;}
转载于:https://www.cnblogs.com/suncoolcat/p/3299558.html
工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat相关推荐
- 《strcmp,strcpy,memcpy,memmove等函数模拟实现》
模拟实现常见字符串函数比如:strcmp,strcpy,memcpy,memmove等函数 1.模拟实现memcpy函数 2.模拟实现memmove函数 3.模拟实现strstr函数 4.模拟实现st ...
- 如何用C语言实现各种字符函数和字符串函数strstr、memcpy、memmove、strlen、strcpy、strcmp、strcat
用C语言模拟实现字符函数与字符串函数 strstr.memcpy.memmove.strlen.strcpy.strcmp.strcat 若使用本文相关代码,还请动手点个赞!!! #define _C ...
- C语言之字符串探究(三):字符串库函数操作——strlen、strcat、strcpy、strcmp
相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...
- C语言之字符串探究(二):字符串原生操作——strlen、strcat、strcpy、strcmp自实现
相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...
- 【C语言】库函数的使用与模拟实现(strlen、strcpy、strcmp....
经历了C语言基础篇的学习,让我们来简单了解几个C语言的库函数! 目录 1.strlen 2.strcpy 3.strcmp 4.strcat 5.strstr 6.strtok 7.字符分类函数 8. ...
- c语言字符串函数strcat strcpy strlen strcmp的用法及原型
目录 strcat的用法及原型 strcpy的用法及原型 strcmp用法及原型 strlen用法及原型 strcat的用法及原型 strcat(str1,str2) 意为将字符串str2连接到字符串 ...
- C语言字符串函数strcat | strcpy | strlen | strcmp的用法及原型
点击蓝字 关注我们 因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 来源于网络,侵删 strcat(str1,str2) 意为将字符串s ...
- strlen、strcpy、strcmp、strcat函数的实现
目录 一.strlen函数的实现 二.strcpy函数的实现 三.strcmp函数的实现 四.strcat函数的实现 五.代码示例展示 strlen.strcpy.strcmp.strcat四个函数都 ...
- LeetCode 1235. 规划兼职工作(动态规划+二分查找)
文章目录 1. 题目 2. 解题 1. 题目 你打算利用空闲时间来做兼职工作赚些零花钱. 这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 ...
最新文章
- hadoop配置安装
- python系统-python系统介绍
- .xhr长轮询_使用Spring 3.2的DeferredResult进行长轮询
- Bootloader传参数到Kernel
- java语言用数组接收字符_Java基础——数组应用之字符串String类
- c# equals与==的区别(转载)
- windows安装软件最好使用独立的文件夹
- 把ICDAR2019-LSVT原始数据集转为REC任务识别数据
- 输入一个三位数,求个位十位百位java代码
- python for maya教程_Python for Maya 教程 – Artist Friendly Programming
- 微信卡券开发错误自排查参考文档
- 一寸照片制作—Photoshop学习(1)
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)(热身赛) C-Statues 题解【dp】【动态规划】
- 获取本地视频文件的缩略图
- 【基础知识】~ 建立时间/保持时间
- html中怎样写渐变色代码,如何用CSS写渐变色
- 最新IP数据库 全球IP数据库 IP城市数据库 2019年6月版
- 动物数据集+动物分类识别训练代码(Pytorch)
- Linux桌面基础:X Window System——Xorg
- 介绍2款最流行的画PCB工具