C言語でsizeofを使用して文字列の長さを取得の方法

C言語では、sizeof演算子を使って文字列の長さを取得することができます。ただし、sizeof演算子は文字列がメモリ上で占有するバイト数を取得するため、文字列の実際の長さ(文字数)を得ることはできません。

文字列の実長を知りたい場合はstrlen関数を使うといいでしょう。以下はsizeofとstrlenという2つの方法で文字列の長さを求めるサンプルコードです。

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, World!";
    int size_with_sizeof = sizeof(str);
    int size_with_strlen = strlen(str);

    printf("Size of str (with sizeof): %d\n", size_with_sizeof);
    printf("Size of str (with strlen): %d\n", size_with_strlen);

    return 0;
}

ネイティブの日本語で言い換えると、

Size of str (with sizeof): 15
Size of str (with strlen): 13

sizeofで求めた文字列の長さは15ですが、strlenで求めた文字列の長さは13です。これは、strlen関数が文字列中の有効な文字数のみをカウントし、文字列の最後につく空文字’\0’をカウントしないからです。

bannerAds