如下是我的测试文件:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. char str1[10] = "123456789";
  7. char str2[10] = "1234567890abcd";
  8. char str3[10] = "12345";
  9. char str4[10] = "12345 12";
  10. char str5[10] = {'1', '2', '3', '4', '\0', '5', '6'};
  11. int len1, len2, len3, len4, len5;
  12. len1 = strlen(str1);
  13. len2 = strlen(str2);
  14. len3 = strlen(str3);
  15. len4 = strlen(str4);
  16. len5 = strlen(str5);
  17. printf("str1--> %s, len-->%d\n", str1, len1);
  18. printf("str2--> %s, len-->%d\n", str2, len2);
  19. printf("str3--> %s, len-->%d\n", str3, len3);
  20. printf("str4--> %s, len-->%d\n", str4, len4);
  21. printf("str5--> %s, len-->%d\n", str5, len5);
  22. printf("====== Game Over ======\n");
  23. printf("\n");
  24. return 0;
  25. }
如下是我的测试结果:
  1. str1--> 123456789, len-->9
  2. str2--> 1234567890123456789, len-->19
  3. str3--> 12345, len-->5
  4. str4--> 12345 12, len-->8
  5. str5--> 1234, len-->4
  6. ====== Game Over ======

结果分析:
根据 "man strlen"的结果,strlen()计算字符串s的长度,但不包括结尾字符'\0'。因此'\0'字符是表示一个字符串结尾的。那么在我的测试中:

str1 长度是很容易知道的。
str2
str2的长度为什么出错了呢?那是因为在分配存储单元的时候"abcd"字符在 str2 长度为10 的存储单元里存放不了了,而它又不能越界分配、存储,因此“abcd”是没有被分配存储单元的,同时 str2 的结尾字符'\0'也没有自动分配,而且str2
是紧邻着 str1 进行分配的,在读取 str2 的时候没有碰到结尾字符 '\0',就会自动地读到 str1 里面的内容,这就形成了str2 截断了 "abcd"同时由接连读取了 str1 的内容,同strlen(str2)的结果是 str1 + str2总的长度。
str3 长度也容易理解。
str4 注意 str4中的空字符在'5' 和 '1'之间,它是空字符而不是结尾字符'\0',所以 str4 的长度也容易理解。
str5  因为我显式地在字符串中增加了一个结尾字符'\0',那么在读取或者判断字符串长度的时候都会从第一个'\0'处结束,那么访问str5的时候会受到第一个 '\0' 的误导。




字符串长度函数strlen()的更多相关文章

  1. php获取字符串长度函数strlen和mb_strlen

    php获取字符串长度函数strlen和mb_strlencount() - 计算数组中的单元数目,或对象中的属性个数strlen — 获取字符串长度,一个汉字为3个字符mb_strlen() - 获取 ...

  2. php中常用的字符串长度函数strlen()与mb_strlen()实例解释

    int strlen ( string $string )  int strlen ( string $string )  获取给定字符串的[字节]长度 成功则返回字符串$string的长度,如果$s ...

  3. 玩转PHP(一)---php中处理汉字字符串长度:strlen和mb_strlen

    注:本文为小编原创,如若转载,请注明出处:http://blog.csdn.net/u012116457/article/details/42536039 今天正式开始学习PHP了,不过小编一不小心就 ...

  4. php中处理汉字字符串长度:strlen和mb_strlen

    PHP内置的字符串长度函数strlen()无法正确处理中文字符串,它得到的只是字符串所占的字节数.对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍 ...

  5. php 字符串长度函数

    php 字符串长度函数 php 字符串长度函数,在php测试字符串长度的函数有二个,一个是strlen,另一个是mb_strlen前一个默认是支持,后一个需要开启一个插件,下面我们来介绍一下二个函数的 ...

  6. 字符数组函数,连接strcat 复制函数strcpy 比较函数strcmp 长度函数 strlen

    之前我们学习数据类型的时候,有一个类型 char ,这个类型允许我们在里边放一个字符 char variable1='o'; char variable2='k'; #include <iost ...

  7. oracle获取字符串长度函数length()和hengthb()

    原文:oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算s ...

  8. 获取字符串长度函数length()和hengthb()

    oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算stri ...

  9. oracle获取字符串长度函数length()和lengthb()

    oracle获取字符串长度函数length()和lengthb()   lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算st ...

随机推荐

  1. WPF画图简便技巧

    下面这个就是:起点在(0,0)开始的正方形.(用绿色填充).此方法比一条一条的写方便多了! <Path Fill="LawnGreen" Data="M 0 0 L ...

  2. WCF小结

    WCF总结 1.WCF(原代号为Indigo)是一个用于创建和运行分布式系统的技术集合,使用它能创建安全的.可靠的.跨平台的的分布式解决方案.它的面向服务的编程模型,整合了.Net平台下以往全部的分布 ...

  3. sql server2008中怎样用sql语句创建数据库和数据表

    这是简单用代码实现创建数据库和数据表的sql语句,如下: --调用系统数据库-- use master go /***防止你要创建的数据库同名,先把它删除掉****/ if Exists(select ...

  4. 360 webscan中防注入跨站攻击的核心

    //get拦截规则 $getfilter = "\\<.+javascript:window\\[.{1}\\\\x|<.*=(&#\\d+?;?)+?>|< ...

  5. linux下socket编程

    相关结构 //下边这两个结构定义在<sys/types.h>里 //一般的地址结构,只能用于覆盖(把其他地址转换为此类型),且只能引用该地址的sa_family字段 struct sock ...

  6. R语言-妹子被追后的选择分析

    前提假设 妹子们一生中可以遇到100个追求者,追求者的优秀程度符合正态分布: 每个妹子都具备判断并比较追求者优秀程度的能力: 接受或拒绝一个追求者后永远无法后悔. 那么,问题来了 当遇到追求者时,如何 ...

  7. ASP.NET Boilerplate 深入系列之:概述

    因为项目需要,最近个人购买了一直在研究的ABP框架的一个Regular Licience,马上要用到一个实际的项目中,为了能够准确把握该框架涉及到设计思想.使用模式.内在实现细节.准备在接下来的一个月 ...

  8. jquery TypeError: 'undefined' is not a function (evaluating 'elem.nodeName.toLowerCase()') [jquery.js:1904]错误原因

    今天,某个环境报了个js错误,TypeError: 'undefined' is not a function (evaluating 'elem.nodeName.toLowerCase()') [ ...

  9. 再谈visibility:hidden和display:none

    之前写过一篇有关visibility:hidden和display:none的文章:为什么要用用visibility:hidden;代替display:none;?主要是从浏览器性能方面入手,却没写两 ...

  10. SharePoint 2013 图像呈现形式介绍

    由于图像呈现形式依赖 SharePoint Server 2013 中的其他功能,因此需确保您满足本节中的先决条件,才能执行本文中的过程.先决条件包括: • 发布网站集 您要在其中添加图像呈现形式的网 ...