Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23832
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 21
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-19 16:37
文章分类

全部博文(7)

文章存档

2014年(7)

我的朋友

分类: LINUX

2014-09-25 11:08:33

    在实习的时候,老师说字符串函数在面试的时候很容易考到,所以自己就把平时的练习总结了一下。
   代码比较简单,只是在面试的时候要熟练的写出来就比较好。

1.strcat()函数的实现

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. char *mystrcat(char *dest,char *src)
  3. {
  4.     char * temp = dest;
  5.     while( '\0' != *dest)
  6.     {
  7.         dest++;
  8.     }
  9.     while('\0' != (*dest++ = *src++))
  10.     {
  11.         
  12.     }
  13.     return temp;
  14. }

  15. int main(int argc, const char *argv[])
  16. {
  17.     char dest[1024] = "wuhan";
  18.     char src[] = "hrllo!";

  19.     mystrcat(dest,src);

  20.     printf("%s\n",dest);

  21.     return 0;
  22. }


2.strcmp()的实现

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. int mystrcmp(char *s1,char *s2)
  3. {
  4.     while(*s1 == *s2 && '\0' != *s1)
  5.     {
  6.         s1++;
  7.         s2++;
  8.     }
  9.     return (*s1 - *s2);
  10. }

  11. int main(int argc, const char *argv[])
  12. {
  13.     char buf1[1024] = {0};
  14.     char buf2[1024] = {0};
  15.     int ret = 0;

  16.     puts("please input string buf1 :");
  17.     gets(buf1);
  18.     puts("please input string buf2 :");
  19.     gets(buf2);

  20.     ret = mystrcmp(buf1,buf2);

  21.     if(ret > 0)
  22.         puts("buf1 > buf2");
  23.     else if(ret ==0)
  24.         puts("buf1 == buf2");
  25.     else
  26.         puts("buf1 < buf2");
  27.     
  28.     return 0;
  29. }



3.strcpy()的实现


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char *mystrcpy(char *p ,const char *q)
  5. {
  6.     char *temp = p;
  7.     while( '\0' != (*p++ = *q++))
  8.     {
  9.         NULL;
  10.     }
  11.     return temp;
  12.  
  13. }
  14.  
  15. int main()
  16. {
  17.   char src[20] = "wuhan";
  18.   char dest[20] = "beijing";
  19.   
  20.   mystrcpy(src,dest);
  21.     
  22.     printf(" after strcpy src[20] = %s\n",src);
  23.   
  24.    return 0;
  25. }



4.strlen()的实现

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int mystrlen(char *s)
  3. {
  4.     int length = 0;
  5.     while('\0' != *s++)
  6.     {
  7.         length++;
  8.     }
  9.     return length;
  10. }

  11. int main(int argc, const char *argv[])
  12. {
  13.     char buf[512] = "hello world !";
  14.     printf("strlen(buf) = %d\n",mystrlen(buf));
  15.  
  16.     return 0;
  17. }



atoi()的实现

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. int my_atoi(char* pstr)
  3. {
  4.     int Ret_Integer = 0;
  5.     int Integer_sign = 1;
  6.       
  7.     /*
  8.     * 判断指针是否为空
  9.     */
  10.     if(pstr == NULL)
  11.     {
  12.         printf("Pointer is NULL\n");
  13.         return 0;
  14.     }
  15.       
  16.     /*
  17.     * 跳过前面的空格字符
  18.     */
  19.     while(isspace(*pstr) == 0)
  20.     {
  21.         pstr++;
  22.     }
  23.       
  24.     /*
  25.     * 判断正负号
  26.     * 如果是正号,指针指向下一个字符
  27.     * 如果是符号,把符号标记为Integer_sign置-1,然后再把指针指向下一个字符
  28.     */
  29.     if(*pstr == '-')
  30.     {
  31.         Integer_sign = -1;
  32.     }
  33.     if(*pstr == '-' || *pstr == '+')
  34.     {
  35.         pstr++;
  36.     }
  37.       
  38.     /*
  39.     * 把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer
  40.     */
  41.     while(*pstr >= '0' && *pstr <= '9')
  42.     {
  43.         Ret_Integer = Ret_Integer * 10 + *pstr - '0';
  44.         pstr++;
  45.     }
  46.     Ret_Integer = Integer_sign * Ret_Integer;
  47.       
  48.     return Ret_Integer;
  49.  
  50. }
  51. int main()
  52. {
  53.     char a[] = "-100";
  54.     char b[] = "456";
  55.     int c = 0;
  56.       
  57.     int my_atoi(char*);
  58.   
  59.     c = atoi(a) + atoi(b);
  60.       
  61.     printf("atoi(a)=%d\n",atoi(a));
  62.     printf("atoi(b)=%d\n",atoi(b));
  63.     printf("c = %d\n",c);
  64.   
  65.     return 0;
  66. }



阅读(1146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~