Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4826766
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: C/C++

2008-11-17 21:16:27

   今天拜读了下linux c函数库的string.h.没想到string处理有这么多函数了,诞生了个想法把所有这些函数都自己写一边,虽然肯定没库函数写的好,但写写至少可以了解下这些函数的机制,哈哈.不扯了^_^
   所以代码均在Linux下测试通过.
  

#include<stdio.h>
#include<stdlib.h>

#define MAX_LEN 255

int my_strlen1(const char* str);
int my_strlen2(char* str);

int main()
{
    char str1[MAX_LEN];
    printf("Please input the string you want to strlen:\n");
    fgets(str1,256,stdin);
    printf("Length of %s is %d\n",str1,my_strlen1(str1));
    
    char* str2="Hello,world!";
    printf("Length of %s is %d\n",str2,my_strlen2(str2));
    exit(EXIT_SUCCESS);
}
/*strlen,定义变量的写法*/
int my_strlen1(const char* str)
{
    int len=0;
    while(*(str+len)!='\0')
        len++;
    return len;
}
/*strlen,不用变量,递归的写法*/
int my_strlen2(char* str)
{
    if(*str=='\0')
        return 0;
    else
        return (1+my_strlen2(++str));
}

/*zj@zj:~/C_parm/string/own_str$ gcc -o strlen strlen.c
 zj@zj:~/C_parm/string/own_str$ ./strlen
 Please input the string you want to strlen:
 hello,world!
 Length of hello,world!
 is 13
 Length of Hello,world! is 12
 *
 *聪明的你也许发现那里有点不对劲了,对一个是12,一个是13!
 其实strlen是不计算最后的字符串结束符'\0'的,那为什么有13呢?
  看输出就知道了,有个换行符号,对就是你输入时的结束符,回车了哦*/

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

macjab2012-03-12 00:02:35

谢谢LZ!学到了不会的东西!