sizeof演算子で文字列の長さを求めるC言語の方法は?
文字列のサイズは、sizeof 演算子で取得できますが、取得されるのは、文字列変数のバイトサイズなので、実際の文字列の長さではないことに注意してください。
strlen関数を使用して文字列の実際の文字数を取得することができます。strlen関数は、文字列内の文字を文字列の終わりを表す’\0’に達するまで繰り返し、たどった文字数を(終わりを表す文字を含めずに)返します。
以下に sizeof と strlen を使って文字列の長さを取得する例を示します。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello";
int length1 = sizeof(str) - 1; // 使用sizeof
int length2 = strlen(str); // 使用strlen
printf("Length 1: %d\n", length1);
printf("Length 2: %d\n", length2);
return 0;
}
結果を出力します。
Length 1: 5
Length 2: 5
上記例で、sizeof(str) は str 配列が占めるバイト数を返すので、文字列の実長を得るには 1 を引く必要がある。一方、strlen(str) は str の実長を返し、終端に含まれない。