Diferença entre strlen() e sizeof() para string em C

O que é strlen()

strlen() é uma função para encontrar o comprimento de uma string. Conta o total de caracteres apresentados em uma string, eliminando o caractere nulo. O número total de caracteres na string inclui alfabetos, caracteres especiais e números, com espaços em branco.

O que é sizeof()

O sizeof() é uma função usada para calcular o tamanho de seu operando. Ele retorna o tamanho de uma variável específica. Esta função pode ser aplicada a qualquer tipo de dados, contendo tipos primitivos como inteiro e tipos de ponteiro, tipos de ponto flutuante, estrutura ou união. A saída do programa que contém sizeof() pode ser diferente no sistema de 32 bits e no sistema de 64 bits.

PRINCIPAIS DIFERENÇAS

  • O método Strlen é usado para encontrar o comprimento de um array, enquanto o método sizeof() é usado para encontrar o tamanho real dos dados.
  • Strlen() conta o número de caracteres em uma string enquanto sizeof() retorna o tamanho de um operando.
  • Strlen() procura o valor nulo da variável, mas sizeof() não se importa com o valor da variável.
  • O valor de retorno em strlen() é long int, por outro lado, o valor de retorno em sizeof() é unsigned int.

Sintaxe de strlen()

strcount = strlen(my_string); 

Aqui, my_string é uma variável de array de caracteres.

Exemplo de strlen()

No programa C abaixo, declaramos a variável string do tipo char. A variável Strng é passada como argumento da função strlen() para encontrar o comprimento de corda.

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

Saída:

Length of given string is: 7

Sintaxe de sizeof()

Sintaxe 1)

sizeof(tipo): Tipo = tipo referenciado

Exemplo de sizeof(tipo):

No código abaixo, &type fornece o endereço da variável (duplo x). É incrementado com 1, que fornece o endereço onde você pode armazenar a próxima variável do tipo x.

Transformar x em char* e calcular a diferença permitirá que você saiba o número total de variáveis ​​do tipo char armazenadas na memória. Usamos getchar() para ler caracteres.

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

saída:

8

Sintaxe 2)

sizeof(nome da variável): Variable-name= nome da variável que você deseja determinar o tamanho.

No programa C abaixo, estamos imprimindo o tipo de dados size char. A instrução Printf contém a função sizeof com o argumento char.

Exemplo de sizeof(nome da variável):

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

Saída:

sizeof(char) = 1

Sintaxe 3)

tamanho de (expressão): Expressão= Expressão que você deve avaliar.

Exemplo de sizeof(expressão):

No programa abaixo, primeiro calculamos e imprimimos o tamanho da variável. Depois disso, estamos avaliando a expressão, armazenando-a na variável a e exibindo o resultado na instrução 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;
}

Saída:

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

Diferença entre strlen() e sizeof()

Aqui estão as diferenças importantes entre strlen() e sizeof():

Diferença entre strlen() e sizeof()

Strlen() Tamanho de()
Strlen() é uma função predefinida, definida em um arquivo de cabeçalho conhecido como string.h. Sizeof() é um operador unário ou expressão em tempo de compilação que calcula a quantidade de memória ocupada por um variável.
Este método é usado para encontrar o comprimento de uma matriz de string ou caractere. Este método é usado para encontrar o tamanho real dos dados (alocados) em bytes.
Conta o número de caracteres em uma string eliminando valores nulos. Retorna o tamanho de um operando, não o comprimento da string (incluindo valores nulos).
Ele aloca memória em tempo de execução e procura o valor nulo da variável. Sizeof() não se importa com o valor da variável.
A função Strlen() funciona apenas com strings de caracteres A função Sizeof() retorna a quantidade de memória alocada em bytes.
O valor de retorno em strlen() é long int. O valor de retorno em sizeof() é unsigned int.
Existe apenas uma sintaxe de strlen() que é int strlen(const char *str); Existem três sintaxes de sizeof() 1) sizeof(type), 2) sizeof(variable-name) e 3) sizeof(expression):