#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
オブジェクトのサイズをバイト単位で示します。あなたのシステムでは、 type のオブジェクトchar *
は明らかに 8 バイト幅です。