我的程序是:
#include <cstdio>
#include <cstring>
using namespace std;
int main(int argc,char **argv)
{
const static size_t maxbuf=128;
const char * s1="String one";
char sd1[maxbuf];
printf("length is %ld",strnlen(sd1,maxbuf));
return 0;
}
错误是:
strnlen was not declared in this scope
问题:
strnlen
函数? strnlen
的一个很好的替代品吗? 最佳答案
strnlen
是 GNU 扩展,也在 POSIX (IEEE Std 1003.1-2008) 中指定。如果 strnlen
不可用(在不支持此类扩展时可能会发生这种情况),请使用以下替换。
// Use this if strnlen is missing.
size_t strnlen(const char *str, size_t max)
{
const char *end = memchr (str, 0, max);
return end ? (size_t)(end - str) : max;
}
我在一个类似的问题 here 上给出了答案。
关于c++ - 在代码块 ide 上,C++ 是否支持 strnlen 函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32676369/