gpt4 book ai didi

c - 单个字符的 Strlen 函数行为

转载 作者:行者123 更新时间:2023-12-02 05:58:59 26 4
gpt4 key购买 nike

这是我的代码:

void func(char c)
{
char * ptr = &c;
size_t len = strlen(ptr);
printf("len - %d\n", len);
}

len 始终打印为 1。

strlen(..) 通过找到数组末尾的空字符 (\0) 来确定 char 数组的长度.这里 ptr 仅使用单个字符 (c) 的地址进行初始化。 c 不包含任何空字符。 ptr如何获取长度?

最佳答案

您不能在不指向空终止数组的指针上使用 strlen()。它调用 undefined behavior .

一旦您的程序达到 UB,就没有任何保证。

FWIW,strlen() 返回类型 size_t,因此您应该使用 %zu 格式说明符来打印结果。

关于c - 单个字符的 Strlen 函数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35477662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com