原文:http://www.cnblogs.com/lpshou/archive/2012/06/05/2536799.html
1、memcpy、memmove、memset源码
link:http://note.youdao.com/share/?id=1f826e4337c7db272e94fdb4f267a8de&type=note
2、strcpy、strcat等源码
link:http://note.youdao.com/share/?id=d23a598b2e31321517ed57d2599de181&type=note
3、atoi和itoa源码:
link:http://note.youdao.com/share/?id=96b713b249981aa0c5f9be5d0657fb90&type=note
整数字符串的转化
1、直接采用现有函数
(1)直接采用itoa实现整数到字符串的转换
函数形式为: char *itoa(int value, char *string, int radix);
该函数包含在头文件stdlib.h中。int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等。
具体实现为:
(2)直接采用atoi实现字符串到整数的转换
函数形式为: int atoi(const char *nptr);
函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。
具体实现为:
2、不采用现有的itoa和atoi函数
(1)整数到字符串的转换
具体实现为:
(2)字符串到整数的转换
具体实现为:
14、2 字符数组和strcpy
(1)面试题1
strcpy字符串拷贝函数的实现
strcpy的原型为:char*strcpy(char *strDest,const char *strSrc)
具体实现为:
(2)面试题3
编写一个函数,把一个char组成的字符串循环右移n位
具体实现为:
方法1:自己实现的
方法2:利用strcpy函数
14、5 字符串与子串的若干问题
(1)求一个字符串中连续出现次数最多的子串
(2)输入一行字符串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置。例如“yyabcdabjcabceg”,输出结果应该为abc和3.
(3)写一个函数来模拟C++中的strstr()函数:该函数的返回值是主串中字符子串的位置以后的所有字符。不适用任何C程序已有的函数来完成。
(4)实现一个函数将一句话里的单词进行倒置,标点符号不倒换。比如一句话“i come from wuhan.“倒置后变成"wuhan. from come i"。
(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