【发布时间】:2010-12-14 10:48:43
【问题描述】:
考虑一种情况:我有一个已知长度的缓冲区,它可能存储一个以 null 结尾的字符串,我需要知道字符串的长度。
问题是如果我使用strlen() 并且字符串结果是不是空终止程序在读取缓冲区结束时遇到未定义的行为。所以我想要一个类似下面的函数:
size_t strlenUpTo( char* buffer, size_t limit )
{
size_t count = 0;
while( count < limit && *buffer != 0 ) {
count++;
buffer++;
}
return count;
}
以便它返回字符串的长度,但从不尝试读取超出缓冲区的末尾。
C 库中是否已经有这样的功能,还是我必须使用自己的功能?
【问题讨论】: