单字符的Strlen函数行为 [英] Strlen Function behavior on single character

查看:99
本文介绍了单字符的Strlen函数行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码:

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

len 始终列为1。

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

strlen(..) determines the length of a char array by finding the null character (\0) at the end of it. Here ptr is initialized with just the address of a single character (c). c does not contain any null characters. How does ptr get the length?

推荐答案

您不能使用 strlen()指向不指向以空值结尾的数组的指针。它会调用未定义的行为

You cannot use strlen() on a pointer that does not point to a null-terminated array. It invokes undefined behavior.

一次

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

FWIW, strlen() returns a type size_t, so you should use %zu format specifier to print the result.

这篇关于单字符的Strlen函数行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆