如下是我的测试文件:

  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. jsp页面 列表 展示 ajax异步实现

    1. 服务端先返回页面基本结构(如message.jsp), <%@ page language="java" contentType="text/html; ch ...

  2. linux 下 整合 nginx 和 php

    一.整合nginx 和 PHP: # vi /usr/local/php/etc/php-fpm.conf 如果该文件不存在,有可能是默认的php-fpm.conf.default 可以使用命令拷贝一 ...

  3. jQuery实现图片伦播效果(淡入淡出+左右切换)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. java微信开发(wechat4j)——access_token中控服务器实现

    access_token是与微信服务器交互过程中的一个凭证,每次客户服务器主动与微信服务器通信都需要带上access_token以确认自己的身份.wechat4j内部封装了对access_token的 ...

  5. art-template引擎模板

    art-template简介 artTemplate(后文简称aT)才是模板引擎,而TmodJS(后文简称TJ,曾用名atc)则是依赖于前者的一款模板预编译器.两者都是由腾讯开发.其实aT完全可以独立 ...

  6. SQL Server Merge语句的使用

    Merge关键字在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插 ...

  7. Ettercap中间人攻击--介绍

    前言 Ettercap有四种界面:Text,Curses,GTK2,Daemonize. -T      命令行界面,只显示字符.通常与配套的参数有-q(安静模式),加上该选项,则不会显示抓到的数据包 ...

  8. IOS客户端Coding项目记录(四)

    1:打开Xcode,然后闪退,报加载某库出现异常 如/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolc ...

  9. BeanFactory not initialized or already closed - call 'refresh' before accessing beans解决办法

    今天在写Spring程序时遇到了一个很常见的错误,而我以前好像一直没碰到过,今天才见到这个错误,经过研究解决了这个错误,犯这个错误真是不应该啊. log4j:WARN No appenders cou ...

  10. CSS ID选择器(三)

    一.ID选择器 ID选择器使用"#"前缀标识符进行标识,后面紧跟指定的元素的ID名称. 如 #box{ width:100px; height:100px;} 元素的ID名称是唯一 ...