繁体   English   中英

为什么在 C 中 strlen() 可以获取字符串的长度而 sizeof 不能?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM