加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否有标准的C函数来计算字符串长度达到某个限制?

发布时间:2020-12-16 10:54:39 所属栏目:百科 来源:网络整理
导读:考虑一种情况:我有一个已知长度的缓冲区,可能存储一个以null结尾的字符串,我需要知道字符串的长度. 问题是如果我使用strlen()并且字符串结果不是以null结尾,则程序在读取超出缓冲区结束时会运行到未定义的行为.所以我想要一个像下面这样的函数: size_t str
考虑一种情况:我有一个已知长度的缓冲区,可能存储一个以null结尾的字符串,我需要知道字符串的长度.

问题是如果我使用strlen()并且字符串结果不是以null结尾,则程序在读取超出缓冲区结束时会运行到未定义的行为.所以我想要一个像下面这样的函数:

size_t strlenUpTo( char* buffer,size_t limit )
 {
     size_t count = 0;
     while( count < limit && *buffer != 0 ) {
        count++;
        buffer++;
     }
     return count;
 }

所以它返回字符串的长度,但从不尝试读取超出缓冲区的结束.

C库中是否已有这样的功能,还是我必须使用自己的功能?

解决方法

使用memchr(字符串,限制),如:

size_t strlenUpTo(char *s,size_t n)
{
    char *z = memchr(s,n);
    return z ? z-s : n;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读