C の文字列の strlen() と sizeof() の違い

strlen()とは

strlen() は文字列の長さを調べる関数です。文字列に含まれる文字の総数を数え、ヌル文字は除外します。文字列に含まれる文字の総数には、アルファベット、特殊文字、数字、空白スペースが含まれます。

sizeof()とは何ですか

sizeof() は、オペランドのサイズを計算するために使用される関数です。特定の変数のサイズを返します。この関数は、整数や整数などのプリミティブ型を含む任意のデータ型に適用できます。 ポインタの種類、浮動小数点型、構造体、または共用体。 sizeof() を含むプログラムの出力は、32 ビット システムと 64 ビット システムでは異なる場合があります。

主な違い

  • Strlen メソッドは配列の長さを見つけるために使用され、sizeof() メソッドはデータの実際のサイズを見つけるために使用されます。
  • Strlen() は文字列内の文字数を数え、sizeof() はオペランドのサイズを返します。
  • Strlen() は変数の null 値を探しますが、sizeof() は変数の値を考慮しません。
  • strlen() の戻り値は long int ですが、sizeof() の戻り値は unsigned int です。

strlen() の構文

strcount = strlen(my_string); 

ここで、my_string は文字配列変数です。

strlen() の例

以下の C プログラムでは、char 型の文字列変数を宣言しています。 Strng 変数は、strlen() 関数の引数として渡され、長さを確認します。 string.

#include<stdio.h> 
#include<string.h> 
int main() 
{ 
    char strng[] = "January"; 
    printf("Length of given string is: %lu\n", strlen(strng));   
}

出力:

Length of given string is: 7

sizeof() の構文

構文1)

サイズ(タイプ): Type= 参照される型

sizeof(type) の例:

以下のコードでは、&type は変数 (double x) のアドレスを示します。これは 1 ずつ増加し、次の x 型の変数を格納できるアドレスを示します。

x を char* に型キャストしてその差を取ると、メモリに格納されている char 型の変数の総数を知ることができます。 getchar() を使用して文字を読み取りました。

#include<stdio.h> 
#define my_sizeof(type) (char *)(&type+1)-(char*)(&type) 
int main() 
{ 
    double x; 
    printf("%ld", my_sizeof(x)); 
    getchar(); 
    return 0; 
}

出力:

8

構文2)

sizeof(変数名): Variable-name= サイズを決定する変数の名前。

以下の C プログラムでは、size char データ型を出力しています。 Printf ステートメントには、引数 char を持つ sizeof 関数が含まれています。

sizeof(変数名)の例:

#include<stdio.h>
int main()
{
	printf("sizeof(char) = %d\n\n", sizeof(char));
		
	return 0;
}

出力:

sizeof(char) = 1

構文3)

サイズ(式): Expression= 評価する必要がある式。

sizeof(式)の例:

以下のプログラムでは、まず変数のサイズを計算して出力します。 この後、式を評価して変数 a に格納し、結果を printf ステートメントで表示します。

#include<stdio.h>
int main() {
   char p = 'S';
   double q = 4.65;
   printf("Size of variable p : %d\n",sizeof(p));
   printf("Size of an expression : %d\n",sizeof(p+q));
   int a = (int)(p+q);
   printf("Size of explicitly converted expression : %d\n",sizeof(a));
   return 0;
}

出力:

Size of variable p : 1                                                                                                                               
Size of an expression : 8                                                                                                                            
Size of explicitly converted expression : 4  

strlen() と sizeof() の違い

strlen() と sizeof() の重要な違いは次のとおりです。

strlen() と sizeof() の違い

ストレン() のサイズ()
Strlen() は事前定義関数であり、string.h として知られるヘッダー ファイルで定義されています。 Sizeof()は、メモリ使用量を計算する単項演算子またはコンパイル時式です。 変数.
このメソッドは、文字列または文字の配列の長さを見つけるために使用されます。 このメソッドは、(割り当てられた) データの実際のサイズをバイト単位で見つけるために使用されます。
文字列内の文字数をカウントし、null 値を除外します。 文字列の長さ (null 値を含む) ではなく、オペランドのサイズを返します。
実行時にメモリを割り当て、変数の null 値を探します。 Sizeof() は変数の値を気にしません。
Strlen() 関数は文字列でのみ機能します Sizeof() 関数は、割り当てられたメモリ量をバイト単位で返します。
strlen()の戻り値はlong intです。 sizeof() の戻り値は unsigned int です。
strlen() の構文は XNUMX つだけあり、それは int strlen(const char *str); です。 sizeof() には、1) sizeof(type)、2) sizeof(variable-name)、3) sizeof(expression) の XNUMX つの構文があります。