Diferencia entre strlen() y sizeof() para cadena en C

¿Qué es strlen()?

strlen() es una función para encontrar la longitud de una cadena. Cuenta el total de caracteres que se presentan en una cadena, eliminando el carácter nulo. El número total de caracteres de la cadena incluye alfabetos, caracteres especiales y números, con espacios en blanco.

¿Qué es el tamaño de()?

sizeof() es una función que se utiliza para calcular el tamaño de su operando. Devuelve el tamaño de una variable particular. Esta función se puede aplicar a cualquier tipo de datos, que contenga tipos primitivos como entero y tipos de puntero, tipos de punto flotante, estructura o unión. La salida del programa que contiene sizeof() puede ser diferente en el sistema de 32 bits y en el sistema de 64 bits.

DIFERENCIAS CLAVE

  • El método Strlen se usa para encontrar la longitud de una matriz, mientras que el método sizeof() se usa para encontrar el tamaño real de los datos.
  • Strlen() cuenta el número de caracteres en una cadena mientras sizeof() devuelve el tamaño de un operando.
  • Strlen() busca el valor nulo de la variable pero a sizeof() no le importa el valor de la variable.
  • El valor de retorno en strlen() es long int, por otro lado, el valor de retorno en sizeof() es unsigned int.

Sintaxis de strlen()

strcount = strlen(my_string); 

Aquí, my_string es una variable de matriz de caracteres.

Ejemplo de strlen()

En el siguiente programa C, hemos declarado una variable de cadena de tipo char. La variable strng se pasa como argumento de la función strlen() para encontrar la longitud de cadena.

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

Salida:

Length of given string is: 7

Sintaxis de tamaño de()

Sintaxis 1)

tamaño de (tipo): Tipo = tipo referenciado

Ejemplo de tamaño de (tipo):

En el código siguiente, &type proporciona la dirección de la variable (doble x). Se incrementa en 1, lo que proporciona la dirección donde puede almacenar la siguiente variable de tipo x.

Encasillar x en char* y tomar la diferencia le permitirá conocer el número total de variables de tipo char almacenadas en la memoria. Hemos utilizado getchar() para leer el carácter.

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

salida:

8

Sintaxis 2)

tamaño de (nombre-variable): Nombre de variable = nombre de la variable cuyo tamaño desea determinar.

En el siguiente programa C, estamos imprimiendo el tipo de datos size char. La declaración Printf contiene la función sizeof con el argumento char.

Ejemplo de tamaño de (nombre-variable):

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

Salida:

sizeof(char) = 1

Sintaxis 3)

tamaño de (expresión): Expresión= Expresión que tienes que evaluar.

Ejemplo de tamaño de (expresión):

En el siguiente programa, primero calculamos e imprimimos el tamaño de la variable. Después de esto, evaluamos la expresión, la almacenamos en la variable a y mostramos el resultado en la declaración 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;
}

Salida:

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

Diferencia entre strlen() y sizeof()

Estas son las diferencias importantes entre strlen() y sizeof():

Diferencia entre strlen() y sizeof()

strlen() Tamaño de()
Strlen() es una función predefinida, que se define en un archivo de encabezado conocido como string.h. Sizeof() es un operador unario o expresión en tiempo de compilación que calcula la cantidad de memoria ocupada por un variable.
Este método se utiliza para encontrar la longitud de una matriz de cadena o carácter. Este método se utiliza para encontrar el tamaño real de los datos (asignados) en bytes.
Cuenta la cantidad de caracteres en una cadena eliminando valores nulos. Devuelve el tamaño de un operando, no la longitud de la cadena (incluidos los valores nulos).
Asigna memoria en tiempo de ejecución y busca el valor nulo de la variable. A Sizeof() no le importa el valor de la variable.
La función Strlen() funciona sólo con cadenas de caracteres La función Sizeof() devuelve la cantidad de memoria asignada en bytes.
El valor de retorno en strlen() es long int. El valor de retorno en sizeof() es int sin signo.
Sólo hay una sintaxis de strlen() que es int strlen(const char *str); Hay tres sintaxis de sizeof() 1) sizeof(tipo), 2) sizeof(nombre-variable) y 3) sizeof(expresión):