Diferența dintre strlen() și sizeof() pentru șir în C
Ce este strlen()
strlen() este o funcție pentru a găsi lungimea unui șir. Numărează totalul de caractere care sunt prezentate într-un șir, eliminând caracterul nul. Numărul total de caractere din șir include alfabete, caractere speciale și numere, cu spații goale.
Ce este sizeof()
Sizeof() este o funcție care este utilizată pentru a calcula dimensiunea operandului său. Returnează dimensiunea unei anumite variabile. Această funcție poate fi aplicată oricărui tip de date, care conține tipuri primitive, cum ar fi întreg și tipuri de indicatori, tipuri în virgulă mobilă, structură sau unire. Ieșirea programului care conține sizeof() poate fi diferită pe sistemul pe 32 de biți și pe sistemul pe 64 de biți.
DIFERENȚE CHEIE
- Metoda Strlen este folosită pentru a găsi lungimea unui tablou, în timp ce metoda sizeof() este folosită pentru a găsi dimensiunea reală a datelor.
- Strlen() numără numărul de caractere dintr-un șir, în timp ce sizeof() returnează dimensiunea unui operand.
- Strlen() caută valoarea nulă a variabilei, dar sizeof() nu-i pasă de valoarea variabilei.
- Valoarea returnată în strlen() este lung int, pe de altă parte, valoarea returnată în sizeof() este unsigned int.
Sintaxa lui strlen()
strcount = strlen(my_string);
Aici, my_string este o variabilă de tip matrice de caractere.
Exemplu de strlen()
În programul C de mai jos, am declarat o variabilă șir de tip char. Variabila Strng este transmisă ca argument al funcției strlen() pentru a găsi lungimea şir.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
ieșire:
Length of given string is: 7
Sintaxa lui sizeof()
Sintaxa 1)
dimensiunea(tip): Tip= tip referit
Exemplu de dimensiunea (tip):
În codul de mai jos, &type oferă adresa variabilei (x dublu). Este incrementat cu 1 care dă adresa unde puteți stoca următoarea variabilă de tip x.
Introducerea tipului x în char* și luarea diferenței vă va permite să cunoașteți numărul total de variabile de tip char stocate în memorie. Am folosit getchar() pentru a citi caracterul.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
ieșire:
8
Sintaxa 2)
sizeof(nume-variabilă): Nume-variabilă= numele variabilei pe care doriți să determinați dimensiunea.
În programul C de mai jos, tipărim tipul de date size char. Instrucțiunea Printf conține dimensiunea funcției cu argumentul char.
Exemplu de sizeof(nume-variabilă):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
ieșire:
sizeof(char) = 1
Sintaxa 3)
dimensiunea(expresie): Expresie= Expresie pe care trebuie să o evaluezi.
Exemplu de sizeof(expresie):
În programul de mai jos, mai întâi calculăm și imprimăm dimensiunea variabilei. După aceasta, evaluăm expresia, o stocăm în variabila a și afișăm rezultatul în instrucțiunea 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; }
ieșire:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Diferența dintre strlen() și sizeof()
Iată diferențele importante dintre strlen() și sizeof():
Strlen() | Dimensiunea() |
---|---|
Strlen() este o funcție predefinită, care este definită într-un fișier antet cunoscut sub numele de string.h. | Sizeof() este un operator unar sau o expresie în timp de compilare care calculează cantitatea de memorie ocupată de un variabil. |
Această metodă este folosită pentru a găsi lungimea unui tablou de șir sau caractere. | Această metodă este folosită pentru a găsi dimensiunea reală a datelor (alocate) în octeți. |
Numărează numărul de caractere dintr-un șir eliminând valorile nule. | Returnează dimensiunea unui operand, nu lungimea șirului (inclusiv valorile nule). |
Alocă memorie în timpul rulării și caută valoarea nulă a variabilei. | Sizeof() nu-i pasă de valoarea variabilei. |
Funcția Strlen() funcționează numai cu șiruri de caractere | Funcția Sizeof() returnează cantitatea de memorie alocată în octeți. |
Valoarea returnată în strlen() este lung int. | Valoarea returnată în sizeof() este nesemnată int. |
Există o singură sintaxă a lui strlen() care este int strlen(const char *str); | Există trei sintaxe pentru sizeof() 1) sizeof(tip), 2) sizeof(nume-variabilă) și 3) sizeof(expression): |