strnlen函数
【摘要】 /* 串比较,strnlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置, 甚至是某个不确定的内存区域)开始扫描, 直到碰到第一个字符串结束符'\0'或计数器到达以下的maxlen为止,然后返回计数器值。 (该函数能防止使用strlen(char * str )时str字符串不以'\0'结束而引发的错误)。 */
#inc...
/*
串比较,strnlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,
甚至是某个不确定的内存区域)开始扫描,
直到碰到第一个字符串结束符'\0'或计数器到达以下的maxlen为止,然后返回计数器值。
(该函数能防止使用strlen(char * str )时str字符串不以'\0'结束而引发的错误)。
*/
-
#include <stdio.h>
-
-
size_t strnlen(const char *s, size_t count)
-
{
-
const char *p ;
-
for (p = s; *p != '\0' && p < s + count; ++p)
-
;
-
return p - s;
-
}
-
-
-
int main()
-
{
-
char a[9] = "abcdefgi";
-
printf("%d\n",strnlen(a,5));
-
a[8] = '4';//'\0'被换成了‘4’
-
printf("%d\n",strnlen(a,10));
-
return 0;
-
}
linux源码
-
#ifndef __HAVE_ARCH_STRNLEN
-
/**
-
* strnlen - Find the length of a length-limited string
-
* @s: The string to be sized
-
* @count: The maximum number of bytes to search
-
*/
-
size_t strnlen(const char *s, size_t count)
-
{
-
const char *sc;
-
-
for (sc = s; count-- && *sc != '\0'; ++sc)
-
/* nothing */;
-
return sc - s;
-
}
-
EXPORT_SYMBOL(strnlen);
-
#endif
文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq523176585/article/details/11944917
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)