c语言里面的strlen是干什么的

strlen()是计算字符串长度的函数,将返回从字符串首到'\0'之间总共的字符个数,原型为:extern unsigned int strlen(char *s);

所以除非你的a[0]本身就是一个字符串,否则不能这样使用

另外也可以用这个函数计算从字符串任意位置到'\0'之间的长度

比如:定义char s[20] = {"abcdefg"};

那么strlen(s)将返回7;而strlen(&s[3])的结果是4,注意这里是“&s[3]”是从第三个字符所在的地址开始计算长度。

看一下百度百科中对函数strlen()的解释,应该对你会有帮助的。计算字符串长度。

再看看别人怎么说的。

再看看别人怎么说的。

C语言中strlen什么用法

strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\0为止,计数结果不包括\0.

其声明为:

unsigned int strlen(char *s);

比如定义字符串:

char *p = "this is for testing";

strlen(p);

返回的结果就是p中元素的个数,即19。

需要注意的是,strlen并不是绝对安全的,如果在传入的字符数组的合法范围内,不存在结束符\0,那么strlen函数会一直访问下去,超出数组范围,即出现越界访问。

所以使用strlen时,程序员必须确认参数字符数组中包含\0值,否则会出现不可预知后果。strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。

原型:extern unsigned int strlen(char *s);,在Visual C++ 6.0中,原型为size_t strlen( const char *string );,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned int size_t;。

头文件:string.h

格式:strlen (字符数组名)

功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内

说明:返回s的长度,不包括结束符NULL。

因为字符串是以字符'\0'结尾的,但是这个'\0'在我们的字符串是隐藏的,我们看不到。实际上是有的.例如:

char a[4]="abc";//这里数组的元素个数至少应该是4,否则此字符串不叫字符串了,只能叫字符数组了。

strlen判断一个字符串的结束就是以其末尾的'\0'为界限。其实现代码可以模拟为以下:

int strlen(char *p)

int i=0;

while(*p++)i++;

return i;

所以他是不包括'\0'这个字符的。__cdecl strlen(const char *);

计算字符串的实际长度(不含字符串结束标志‘\0’),并将计算结果作为函数值返回。简单的跟你说strlen是算长度的,比如,你定义int a[10];

如果运算sizeof(a),会返回40.因为一个int类型占了4个字节的内存空间,10个就占了40字节

如果运算strlen(a),返回不一定是40,这要看你在a数组里面用了多少空间,如果用了4个字节,就返回4,如果用满就是返回40了尾的'\0'。

strlen的工作原理是不断向后看,直到一个'\0'字符。

因此第一个程序的运行结果是不可预测的,取决于之前内存里的残留数据。

而第二个程序,数组的剩余项均被赋成0

c语言strlen(c语言strlen计算空格吗)相关推荐

  1. C语言学习11:strlen()函数详解

    目录 1.strlen()函数功能 2.strlen()函数的使用 2.1 数组 3.注意事项 1.strlen()函数功能 strlen()函数 用于 计算 指定字符串的 长度,但 不包括 结束字符 ...

  2. 如何求C语言字符串长度(strlen函数和sizeof关键字)

    如何求C语言字符串长度(strlen函数和sizeof关键字) 在程序里,一般会用***strlen()***函数或***sizeof()***来获取一个字符串的长度,但这2种方法获取的字符串的长度其 ...

  3. C语言函数替代strlen,C语言实现strlen函数的几种方法【转】

    今天偶然看到了一个实现strlen函数的方法,也实际练习了一下,挺有意义的,其实现的一些思想值得学习,记录一下吧.我这里除了写两个比较巧妙的递归实现之外,也写了另外一种常规的方式. 传说常见的一个笔试 ...

  4. C语言删除字符串的所有尾部空格

    <C语言程序设计教程(朱鸣华)第3版>182页编程题1 编写程序,删除字符串的所有空格(要求用指针编程序) ****代码如下 #define _CRT_SECURE_NO_WARNINGS ...

  5. C语言之字符串探究(九):空格去除——trim系列

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  6. 如何用c语言做高精度计算原理,C语言羁绊之高精度乘法计算

    很大一部分借鉴了(C语言的高精度算法)这一博客,你们可以去看看.欢迎指正!!! 1,定义 对于计算机无法用普通数据类型(如:longint)表示的大整数进行乘法运算,称为高精度算法.这里的高精度乘法主 ...

  7. C语言的4种方式实现空格转换为%20

    C语言的4种方式实现空格转换为%20 下面介绍C语言将空格的转换为%20的四种方法 方法一 介绍: //在 C 语言标准(C89)没有定义布尔类型,所以 C 语言判断真假时以 0 为假,非 0 为真. ...

  8. 按照C++语言程序结构组成数字电路进行计算的计算机

    按照C++语言程序结构组成数字电路进行计算的计算机 按照C++语言程序结构组成数字电路进行计算的计算机是一种可以按照C++语言程序结构来安排加法器,输出显示电路,输入电路,的数字计算机.它由按键,液晶 ...

  9. 零基础学浙大翁恺C语言(2):计算

    零基础学C语言(2):计算 C语言做整数加法计算 在程序框架内输入printf("%d",12+34) ; 代表将12+34得到的整数结果要输入到%d这个位置. # include ...

最新文章

  1. python词汇-基本 Python 词汇
  2. 计算机内存知识txt,计算机新手必备内存实用知识.docx
  3. UDA机器学习基础—交叉验证
  4. gorm preload 搜索_macOS系统本地文件搜索工具
  5. ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能
  6. 《Effective C#》的读书笔记
  7. display inline-block 垂直居中
  8. 不能bostype没有元数据异常_EAS BOS 开发问题集锦
  9. Arcgis导入KMZ/KML文件的方法
  10. typora插入代码设置_五分钟快速上手神器Typora
  11. 商品管理后台html,商品类型管理.html
  12. oracle 表删掉了_分区,Oracle 删除表分区
  13. html代码格式化nodejs,使用Node编写的Sublime代码格式化工具插件(HTML/CSS/JS)
  14. pyaudio 声音处理
  15. centos php ioncube_CentOS 7安装ionCube Loader为php解密组件的方法
  16. win 7更改计算机用户名和密码错误,解决win7一开机就显示用户名和密码错误故障...
  17. 计算机网络网关设置路由器,天翼网关(宽带)怎么连接路由器?
  18. BAT机器学习面试1000题系列(第1~305题
  19. 选择城市,按城市的首字母进行排序
  20. 任正非“互联网思维”如是说

热门文章

  1. android自定义可扩展面板,一日一技 | 用 Windows 10 自带功能实现大屏、小屏无线扩展...
  2. 微信小程序初学者常见错误
  3. JSPs only permit GET POST or HEAD问题
  4. 墨卡托投影参数设置_墨卡托投影(Mercator)
  5. 昂贵的聘礼「最短路」「思维」
  6. UI、ID、UE和GUI,这些都是什么
  7. PHP基础和环境搭建(一)
  8. web3j的基础用法-2多种创建钱包
  9. java简易版连连看_Java版连连看小游戏
  10. 蓝桥杯题目练习 提升篇 [蓝桥杯2019初赛]迷宫