atoi、itoa,strcpy,strcmp,memcpy等实现
原文:http://www.cnblogs.com/lpshou/archive/2012/06/05/2536799.html
整数字符串的转化
1、直接采用现有函数
(1)直接采用itoa实现整数到字符串的转换
函数形式为: char *itoa(int value, char *string, int radix);
该函数包含在头文件stdlib.h中。int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等。
具体实现为:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
(2)直接采用atoi实现字符串到整数的转换
函数形式为: int atoi(const char *nptr);
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
2、不采用现有的itoa和atoi函数
(1)整数到字符串的转换
具体实现为:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
(2)字符串到整数的转换
具体实现为:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
14、2 字符数组和strcpy
(1)面试题1
strcpy字符串拷贝函数的实现
strcpy的原型为:char*strcpy(char *strDest,const char *strSrc)
具体实现为:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
(2)面试题3
编写一个函数,把一个char组成的字符串循环右移n位
具体实现为:
方法1:自己实现的
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
方法2:利用strcpy函数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
14、5 字符串与子串的若干问题
(1)求一个字符串中连续出现次数最多的子串
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
(2)输入一行字符串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置。例如“yyabcdabjcabceg”,输出结果应该为abc和3.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
(3)写一个函数来模拟C++中的strstr()函数:该函数的返回值是主串中字符子串的位置以后的所有字符。不适用任何C程序已有的函数来完成。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
(4)实现一个函数将一句话里的单词进行倒置,标点符号不倒换。比如一句话“i come from wuhan.“倒置后变成"wuhan. from come i"。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
(5)写一个函数,计算4 000 000 000以内的最大的那个f(n)=n的值,函数f的功能是统计所有0到n之间所有含有数字1的数字和。
比如f(13)=6
因为1在1,2,3,4,5,6,7,8,9,10,11,12,13中的总数是6(1,11,12,13)
(6)转换字符串格式为原来字符串的字符+该字符出现的个数,例如字符串1233422222,转化为1121324125.
主要收获是sprintf函数的使用:http://baike.baidu.com/view/1295144.htm
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)