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

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

概述考虑一种情况:我有一个已知长度的缓冲区,可能存储一个以null结尾的字符串,我需要知道字符串的长度. 问题是如果我使用strlen()并且字符串结果不是以null结尾,则程序在读取超出缓冲区结束时会运行到未定义的行为.所以我想要一个像下面这样的函数: size_t strlenUpTo( char* buffer, size_t limit ) { size_t count = 0; 考虑一种情况:我有一个已知长度的缓冲区,可能存储一个以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;}
总结

以上是内存溢出为你收集整理的是否有标准的C函数来计算字符串长度达到某个限制?全部内容,希望文章能够帮你解决是否有标准的C函数来计算字符串长度达到某个限制?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存