de>#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));

}de>

de>/*zj@zj:~/C_parm/string/own_strgcc−ostrlenstrlen.czj@zj: /Cparm/string/ownstrgcc−ostrlenstrlen.czj@zj: /Cparm/string/ownstr ./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呢?
  看输出就知道了,有个换行符号,对就是你输入时的结束符,回车了哦*/de>


©著作权归作者所有:来自51CTO博客作者wx608bc9b03aa39的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. (lintcode)第5题第k大元素
  2. (lintcode)第11题二叉查找树中搜索区间
  3. (lintcode)第15题 全排列(没有重复数字)
  4. 函数编写n的阶乘的两种方法:循环和递归
  5. Ubuntu Linux 安装 .7z 解压和压缩文件
  6. 【递归】JavaScript实现99乘法表的编写(双层for循环与递归方法)
  7. 2021-04-12:判断二叉树是否是搜索二叉树?
  8. SQL执行加载顺序
  9. 【vue】三种获取input值的写法

随机推荐

  1. Android Layout布局文件里的android:layo
  2. 哪些年遇到过的Andriod问题(5)This text
  3. Android:在Eclipse下开发android应用产生
  4. android中国风笔记源码,金鱼游动动画源码
  5. (转帖)Android系列之浅谈Android 3D旋转
  6. android 图片的 放大 缩小 移动
  7. 使用Vitamio打造自己的Android万能播放器
  8. android Handler 机制研究学习笔记
  9. Android原生(Native)C开发之二 framebuff
  10. android BaseAdapter优化