#include <stdio.h>
int main()
{
char * name = "bob";
int x = sizeof(name);
printf("%s is %d characters\n",name,x);
}
我有上面的代码。我想打印这个字符串中的字符数。它继续打印8
而不是3
. 为什么?
sizeof()
返回字节大小。具体来说,它给出了存储操作数类型的对象所需的字节数。在这种情况下sizeof()
,返回指向字符串的指针的字节大小,在您的计算机上是 8 个字节或 64 位。
strlen()
是您正在寻找的:
#include <stdio.h>
#include <string.h> // include string.h header to use strlen()
int main()
{
char * name = "bob";
int x = strlen(name); // use strlen() here
printf("%s is %d characters\n",name,x);
}
用于strlen
查找字符串的长度。
每个字符至少有 1 个字节宽。它打印8
是因为sizeof
获得了一个指向的指针,bob
并且在您的机器上,一个指针是8
字节宽的。
strlen
为您提供字符串中的字符数。 sizeof
以字节为单位为您提供对象的大小。在您的系统上,类型的对象char *
显然是 8 字节宽。