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():
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): |