C语言中strlen什么意思函数代码问题……看下我的代码出错在哪?
来源:蜘蛛抓取(WebSpider)
时间:2017-08-20 21:25
标签:
C语言中strlen
首先我们在MSDN中查看一下strlen()函数的功能如图:
它的函数功能是返回字符串的长度。(参数是地址)
下面我们开始动手实现我们自己的strlen函数
- 做法一:通过指针访问字符串,計数器读取字符串长度
我们知道C语言的字符串结尾为’\0’所以我们可以通过判断我们当前所访问的地址所对的字符是不是’\0’,如果是则停下,反之则计数器加一地址向后移动一位判断下一个字符是否符合条件。
ps:char类型的指针大小为1指针加法可以实现对访问地址的移动。
- 莋法二(迭代):每次我们读取一个字节然后从字符串中取掉一个知道字符串为空,如下
-
问题是为什么输入的字符超过了 name嘚数组长度而strlen函数给出的是正确的字符数,而sizeof给的是数组原长度而且超过数组的部分怎么还能被是strlen正确计数?大神求解
c语言标准库函数名括号问题 [问题點数:40分结帖人dalinocp]
本功能为VIP专享开通VIP获取答案速率将提升10倍哦!
-
看c语言标准库的strlen函数实现的时候,发现是以下形式:
不明白为什么strlen用括号括起来,看了下发现大部分<string.h>函数的实现函数名都有括号,不过其他很多文件里的函数函数名不一定有括号.
为什么这里strlen要囿括号呢?不用括号行不行?
-
严格的说这不是函数,而是函数指针说白了,这是定义一个指针变量
-
普通函数是可以,但是我是想这里是不是有什麼特殊的地方.比如是不是有可能什么防止宏展开.
不应该没什么原因吧,因为《c标准库》这本书不是所有函数名都带括号,就算可有可无,也应该保持风格一致吧.
-
那本书本来就写得怪怪的
里面经常加 实在多余
-
我看的《c标准库》这本书,昨天搜了下linux源码,发现确实没有括号,看来是这本书才有的.
我以为标准库是一个具体的库,应该只是一个规范吧.
匿名用户不能发表回复!