atoiitoa,strcpy,strcmp,memcpy等实现

Posted 智者无疆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了atoiitoa,strcpy,strcmp,memcpy等实现相关的知识,希望对你有一定的参考价值。

原文:http://www.cnblogs.com/lpshou/archive/2012/06/05/2536799.html

 

1、memcpy、memmove、memset源码

 

 

2、strcpy、strcat等源码

 

 

3、atoi和itoa源码:

 

 

整数字符串的转化

1、直接采用现有函数

(1)直接采用itoa实现整数到字符串的转换

  函数形式为: char *itoa(int value, char *string, int radix);

  该函数包含在头文件stdlib.h中。int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等。

  具体实现为:

View Code

(2)直接采用atoi实现字符串到整数的转换

  函数形式为: int atoi(const char *nptr);

    函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \\0) 字符时停止转换,返回整型数。
  具体实现为:
View Code

2、不采用现有的itoa和atoi函数

(1)整数到字符串的转换

  具体实现为:

View Code

(2)字符串到整数的转换

  具体实现为:

View Code


14、2 字符数组和strcpy

(1)面试题1

  strcpy字符串拷贝函数的实现

  strcpy的原型为:char*strcpy(char *strDest,const char *strSrc)

  具体实现为:

 

View Code

(2)面试题3

  编写一个函数,把一个char组成的字符串循环右移n位

  具体实现为:

  方法1:自己实现的

View Code

 

  方法2:利用strcpy函数

View Code

14、5 字符串与子串的若干问题

(1)求一个字符串中连续出现次数最多的子串

 

View Code

(2)输入一行字符串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置。例如“yyabcdabjcabceg”,输出结果应该为abc和3.

View Code

 

 (3)写一个函数来模拟C++中的strstr()函数:该函数的返回值是主串中字符子串的位置以后的所有字符。不适用任何C程序已有的函数来完成。

View Code

 

(4)实现一个函数将一句话里的单词进行倒置,标点符号不倒换。比如一句话“i come from wuhan.“倒置后变成"wuhan. from come i"。

 

View Code

 

(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

View Code

 

以上是关于atoiitoa,strcpy,strcmp,memcpy等实现的主要内容,如果未能解决你的问题,请参考以下文章

strcpy strcmp memmove

strlen,strcat,strcpy,strcmp的实现

模拟实现 strcat,strcmp,strcpy,srelen

C 实现strcmp,strcpy,strcat函数

c语言 strcpy,strcat,strcmp函数模拟实现

面试15--strcmp,strcpy,memmove实现