Differenza tra strlen() e sizeof() per la stringa in C
Cos'è strlen()
strlen() è una funzione per trovare la lunghezza di una stringa. Conta i caratteri totali presentati in una stringa, eliminando il carattere nullo. Il numero totale di caratteri nella stringa include alfabeti, caratteri speciali e numeri, con spazi vuoti.
Cos'è sizeof()
sizeof() è una funzione utilizzata per calcolare la dimensione del suo operando. Restituisce la dimensione di una particolare variabile. Questa funzione può essere applicata a qualsiasi tipo di dati, contenente tipi primitivi come intero e tipi di puntatore, tipi a virgola mobile, struttura o unione. L'output del programma contenente sizeof() potrebbe essere diverso sul sistema a 32 bit e sul sistema a 64 bit.
DIFFERENZE CHIAVE
- Il metodo Strlen viene utilizzato per trovare la lunghezza di un array mentre il metodo sizeof() viene utilizzato per trovare la dimensione effettiva dei dati.
- Strlen() conta il numero di caratteri in una stringa mentre sizeof() restituisce la dimensione di un operando.
- Strlen() cerca il valore null della variabile ma sizeof() non si preoccupa del valore della variabile.
- Il valore restituito in strlen() è long int, mentre il valore restituito in sizeof() è unsigned int.
Sintassi di strlen()
strcount = strlen(my_string);
Qui, my_string è una variabile di array di caratteri.
Esempio di strlen()
Nel programma C seguente, abbiamo dichiarato una variabile stringa di tipo char. La variabile Strng viene passata come argomento della funzione strlen() per trovarne la lunghezza stringa.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
Produzione:
Length of given string is: 7
Sintassi di sizeof()
Sintassi 1)
dimensione(tipo): Tipo= tipo referenziato
Esempio di sizeof(tipo):
Nel codice sottostante, &type fornisce l'indirizzo della variabile (doppia x). Viene incrementato di 1, che fornisce l'indirizzo in cui è possibile memorizzare la variabile successiva di tipo x.
Digitare x in char* e prendere la differenza ti consentirà di conoscere il numero totale di variabili di tipo char archiviate in memoria. Abbiamo usato getchar() per leggere i caratteri.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
produzione:
8
Sintassi 2)
sizeof(nome-variabile): Nome-variabile= nome della variabile di cui desideri determinare la dimensione.
Nel programma C seguente, stiamo stampando il tipo di dati size char. L'istruzione Printf contiene la funzione sizeof con argomento char.
Esempio di sizeof(nome-variabile):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
Produzione:
sizeof(char) = 1
Sintassi 3)
dimensionedi(espressione): Expression= Espressione da valutare.
Esempio di sizeof(espressione):
Nel programma seguente, calcoliamo e stampiamo prima la dimensione della variabile. Successivamente, valutiamo l'espressione, la memorizziamo nella variabile a e visualizziamo il risultato nell'istruzione 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; }
Produzione:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Differenza tra strlen() e sizeof()
Ecco le differenze importanti tra strlen() e sizeof():
Strlen() | Taglia di() |
---|---|
Strlen() è una funzione predefinita, definita in un file di intestazione noto come string.h. | Sizeof() è un operatore unario o un'espressione in fase di compilazione che calcola la quantità di memoria occupata da a variabile. |
Questo metodo viene utilizzato per trovare la lunghezza di un array di stringhe o caratteri. | Questo metodo viene utilizzato per trovare la dimensione effettiva dei dati (allocati) in byte. |
Conta il numero di caratteri in una stringa eliminando i valori nulli. | Restituisce la dimensione di un operando, non la lunghezza della stringa (inclusi i valori null). |
Alloca memoria in fase di esecuzione e cerca il valore nullo della variabile. | Sizeof() non si preoccupa del valore della variabile. |
La funzione Strlen() funziona solo con stringhe di caratteri | La funzione Sizeof() restituisce la quantità di memoria allocata in byte. |
Il valore restituito in strlen() è long int. | Il valore restituito in sizeof() è unsigned int. |
Esiste solo una sintassi di strlen() che è int strlen(const char *str); | Esistono tre sintassi di sizeof() 1) sizeof(tipo), 2) sizeof(nome-variabile) e 3) sizeof(espressione): |