是否有标准的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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |