[英]Why strlen() can get the length of string and sizeof cannot in C?
我想在VS Ccode中计算C中字符串的长度,但是当我使用sizeof函数时,编译的时间并没有停止并得到任何结果; 另一方面,我可以通过 strlen 函数获取长度:为什么?
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char greeting[] = "hello";
int len = strlen(greeting);
//int len = sizeof(greeting);
printf("length is:%d",len);
return 0;
}
我知道它们之间的区别: strlen()
用于获取字符/字符串数组的长度,而sizeof()
用于获取任何类型数据的实际大小(以字节为单位)。 但是,我不知道为什么我运行sizeof时没有答案。
您调用了未定义的行为:您正在使用int
格式打印size_t
类型的值。 这不能保证有效。 投射价值:
printf("length is: %d\n, (int)sizeof(greeting));
结果将比strlen()
的结果strlen()
因为strlen()
不计算终止空字节而sizeof()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.