Διαφορά μεταξύ strlen() και sizeof() για συμβολοσειρά στο C

Τι είναι το strlen()

Η strlen() είναι μια συνάρτηση για την εύρεση του μήκους μιας συμβολοσειράς. Μετρά τους συνολικούς χαρακτήρες που παρουσιάζονται σε μια συμβολοσειρά, εξαλείφοντας τον μηδενικό χαρακτήρα. Ο συνολικός αριθμός χαρακτήρων στη συμβολοσειρά περιλαμβάνει αλφάβητα, ειδικούς χαρακτήρες και αριθμούς, με κενά κενά.

Τι είναι το sizeof()

Η sizeof() είναι μια συνάρτηση που χρησιμοποιείται για τον υπολογισμό του μεγέθους του τελεστή της. Επιστρέφει το μέγεθος μιας συγκεκριμένης μεταβλητής. Αυτή η συνάρτηση μπορεί να εφαρμοστεί σε οποιονδήποτε τύπο δεδομένων, που περιέχει πρωτόγονους τύπους όπως ακέραιος και τύπους δείκτη, τύπους κινητής υποδιαστολής, δομή ή ένωση. Η έξοδος του προγράμματος που περιέχει sizeof() μπορεί να είναι διαφορετική στο σύστημα 32-bit και στο σύστημα 64-bit.

ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ

  • Η μέθοδος Strlen χρησιμοποιείται για την εύρεση του μήκους ενός πίνακα, ενώ η μέθοδος sizeof() χρησιμοποιείται για την εύρεση του πραγματικού μεγέθους των δεδομένων.
  • Η Strlen() μετράει τους αριθμούς των χαρακτήρων σε μια συμβολοσειρά ενώ η sizeof() επιστρέφει το μέγεθος ενός τελεστή.
  • Η Strlen() αναζητά τη μηδενική τιμή της μεταβλητής αλλά η sizeof() δεν ενδιαφέρεται για την τιμή της μεταβλητής.
  • Η επιστρεφόμενη τιμή στο strlen() είναι long int, ενώ η επιστρεφόμενη τιμή στο sizeof() είναι ανυπόγραφη int.

Σύνταξη του strlen()

strcount = strlen(my_string); 

Εδώ, το my_string είναι μια μεταβλητή πίνακα χαρακτήρων.

Παράδειγμα strlen()

Στο παρακάτω πρόγραμμα C, έχουμε δηλώσει μεταβλητή συμβολοσειράς τύπου char. Η μεταβλητή Strng είναι ένα όρισμα της συνάρτησης strlen() για να βρεθεί το μήκος του κορδόνι.

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

Παραγωγή:

Length of given string is: 7

Σύνταξη του sizeof()

Σύνταξη 1)

μέγεθος(τύπος): Τύπος= αναφερόμενος τύπος

Παράδειγμα sizeof(type):

Στον παρακάτω κώδικα, το &type δίνει τη διεύθυνση της μεταβλητής (διπλό x). Αυξάνεται με 1 που δίνει τη διεύθυνση όπου μπορείτε να αποθηκεύσετε την επόμενη μεταβλητή τύπου x.

Με τη μετάδοση του x σε char* και τη λήψη της διαφοράς θα μπορείτε να γνωρίζετε τον συνολικό αριθμό των μεταβλητών τύπου char που είναι αποθηκευμένες στη μνήμη. Χρησιμοποιήσαμε getchar() για να διαβάσουμε χαρακτήρα.

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

παραγωγή:

8

Σύνταξη 2)

sizeof(variable-name): Variable-name= όνομα της μεταβλητής που θέλετε να καθορίσετε το μέγεθος.

Στο παρακάτω πρόγραμμα C, εκτυπώνουμε τον τύπο δεδομένων μεγέθους char. Η δήλωση Printf περιέχει συνάρτηση sizeof με όρισμα char.

Παράδειγμα sizeof(variable-name):

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

Παραγωγή:

sizeof(char) = 1

Σύνταξη 3)

sizeof(έκφραση): Έκφραση= Έκφραση που πρέπει να αξιολογήσετε.

Παράδειγμα sizeof(expression):

Στο παρακάτω πρόγραμμα, πρώτα υπολογίζουμε και εκτυπώνουμε το μέγεθος της μεταβλητής. Μετά από αυτό, αξιολογούμε την έκφραση, την αποθηκεύουμε στη μεταβλητή a και εμφανίζουμε το αποτέλεσμα σε δήλωση 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;
}

Παραγωγή:

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

Διαφορά μεταξύ strlen() και sizeof()

Εδώ είναι οι σημαντικές διαφορές μεταξύ strlen() και sizeof():

Διαφορά μεταξύ strlen() και sizeof()

Strlen() Μέγεθος του()
Η Strlen() είναι μια προκαθορισμένη συνάρτηση, η οποία ορίζεται σε ένα αρχείο κεφαλίδας γνωστό ως string.h. Το Sizeof() είναι ένας μοναδικός τελεστής ή έκφραση χρόνου μεταγλώττισης που υπολογίζει την ποσότητα της μνήμης που καταλαμβάνεται από ένα μεταβλητή.
Αυτή η μέθοδος χρησιμοποιείται για την εύρεση του μήκους μιας σειράς συμβολοσειράς ή χαρακτήρων. Αυτή η μέθοδος χρησιμοποιείται για την εύρεση του πραγματικού μεγέθους των δεδομένων (που έχουν εκχωρηθεί) σε byte.
Μετρά τους αριθμούς των χαρακτήρων σε μια συμβολοσειρά εξαλείφοντας τις μηδενικές τιμές. Επιστρέφει το μέγεθος ενός τελεστή, όχι το μήκος συμβολοσειράς (συμπεριλαμβανομένων των μηδενικών τιμών).
Κατανέμει μνήμη κατά το χρόνο εκτέλεσης και αναζητά τη μηδενική τιμή της μεταβλητής. Η Sizeof() δεν ενδιαφέρεται για την τιμή της μεταβλητής.
Η συνάρτηση Strlen() λειτουργεί μόνο με συμβολοσειρές χαρακτήρων Η συνάρτηση Sizeof() επιστρέφει την ποσότητα μνήμης που έχει εκχωρηθεί σε byte.
Η τιμή επιστροφής στο strlen() είναι long int. Η τιμή επιστροφής στο sizeof() είναι ανυπόγραφη int.
Υπάρχει μόνο μία σύνταξη της strlen() η οποία είναι int strlen(const char *str); Υπάρχουν τρεις συντάξεις sizeof() 1) sizeof(type), 2) sizeof(variable-name) και 3) sizeof(expression):