打印字符串中不正确的字符数

时间:2013-11-08 14:50:41

标签: c string

#include <stdio.h>

int main()
{
        char * name  = "bob";
        int x = sizeof(name);
        printf("%s is %d characters\n",name,x);
}

我有上面的代码。我想打印此字符串中的字符数。它会一直打印8而不是3。为什么呢?

3 个答案:

答案 0 :(得分:2)

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);
}

答案 1 :(得分:1)

使用strlen查找字符串的长度。

每个字符至少1个字节宽。它打印8,因为sizeof获取指向bob的指针,并且在您的机器上,指针为8字节宽。

答案 2 :(得分:0)

strlen为您提供字符串中的字符数。 sizeof以字节为单位给出对象的大小。在您的系统上,char *类型的对象显然是8字节宽。