Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

C για strcmp Λειτουργία

C + + περιέχει ήδη ένα string συνάρτηση comparison - " strcmp ( ) " - η οποία εκτελεί το έργο της σύγκρισης δύο χορδές για την ισότητα . Η συνάρτηση strcmp () επιστρέφει διαφορετικές τιμές ανάλογα με τη σχέση των χορδών σε ένα άλλο. Η εφαρμογή ενός strcmp ( λειτουργία ) διαφέρει μεταξύ των αρχιτεκτονικών υπολογιστών ( ή παραμένει με άδεια από διάφορους προμηθευτές ) , αλλά ένας προγραμματιστής μπορεί Νέα υλοποίηση τη βασική λειτουργικότητα του κώδικα για να δείτε πώς λειτουργεί . Για να κατανοήσουμε τη λειτουργία , ωστόσο , ο προγραμματιστής πρέπει να καταλάβουν πώς χορδές , πίνακες και δείκτες εργάζονται σε C και C + + . Χορδές , Πίνακες και Δείκτες
Η

Στην C , χορδές είναι συλλογές ( ή πίνακες) των χαρακτήρων . Για παράδειγμα , πώληση

char string [ 10 ] ?

Ως μια σειρά από 10 χαρακτήρες , " string" αποτελεί μια πρόταση στον C. Ωστόσο , οι πίνακες είναι πραγματικά δείκτες , ή μεταβλητές που αφορούν τη διεύθυνση μνήμης . Η σειρά " string" στην πραγματικότητα αντιπροσωπεύει ένα δείκτη προς το πρώτο στοιχείο στο μπλοκ μνήμης , και ο προγραμματιστής μπορεί να παραπέμπει τα άλλα στοιχεία του πίνακα μέσω αυτού του δείκτη .
Εικόνων Ορίζοντας " strcmp ( ) "

Ο βασικός ορισμός μιας συνάρτησης strcmp θα μοιάζει με αυτό :

int strcmp ( const char * str1 , const char * str2 ) ?

Εξ ορισμού, μια λειτουργία σύγκρισης συμβολοσειράς θα χρησιμοποιήσει δύο συστοιχίες χαρακτήρα ( str1 , str2 ) . Δεδομένου ότι οι συστοιχίες αποτελούν δείκτες , ο ορισμός θα λάβει δίποντα χαρακτήρα . Με αυτούς τους δείκτες , ο προγραμματιστής μπορεί να ελέγξει κάθε στοιχείο σε μια σειρά εναντίον ενός άλλου πίνακα. Πρώτα, όμως , ο προγραμματιστής πρέπει να δηλώνει δύο μεταβλητές χαρακτήρα , η οποία θα κρατήσει τις τιμές που βρίσκονται στα δύο χορδές :

int strcmp ( const char * str1 , const char * str2 ) { char

α, β ?

}

Η Διασχίζοντας τις χορδές
Η

Για να συγκρίνετε τις χορδές , η λειτουργία πρέπει να συγκρίνουμε κάθε χαρακτήρα σε κάθε συμβολοσειρά σε ένα άλλο. Για να το κάνετε αυτό , ο προγραμματιστής χρησιμοποιεί τα δίποντα ( str1 , str2 ) για να μετακινηθείτε προς τα κάτω σε κάθε σειρά :

ενώ ( * str1 = ' \\ 0 ' && * str1 == * str2 ! ) {

str1 + + ? //μετακινεί το δείκτη του str1 εγχόρδων στον επόμενο χαρακτήρα

str2 + + ? //κάνει το ίδιο , str2

}

ο βρόχος while κάνει το αναζήτηση : πρώτον , αν str1 χτυπά ένα χαρακτήρα τερματισμού ( " \\ 0 ", η οποία επισυνάπτεται στο τέλος του χορδές από τη γλώσσα C ) , τότε ο βρόχος τερματίζεται , διότι η σειρά γίνεται . Δεύτερον , αν η αξία των str1 ( * str1 ) δεν ισούται με την αξία της str2 ( * str2 ) , τότε ο βρόχος σταματά , επειδή οι ​​χορδές είναι άνιση .
Εικόνων Επιστρέφοντας το αποτέλεσμα

strcmp επιστρέφει ένα από τα τρία αποτελέσματα : 0 (εάν οι χορδές είναι ίσες ) , 1 (αν η πρώτη είναι μεγαλύτερη από τη δεύτερη) και -1 (εάν το πρώτο είναι μικρότερο από το δεύτερο ) :

char a = * str1 ?

char b = * str2 ?

if ( a == b )

{ επιστροφή 0? }

άλλο

{ επιστροφή ( ( a

Δεδομένου ότι οι βρόχοι σταματήσει όταν υπάρχει ανισότητα ή όταν και οι δύο τελικά , το αποτέλεσμα θα καταλήξουν ως δύο ίσες χαρακτήρες ( το σύμβολο '\\ 0' ) ή οι άνισες οι χαρακτήρες .
εικόνων πλήρης Κωδικός
Η

η πλήρης κωδικό , στη συνέχεια , μοιάζει με αυτό (και υλοποιήσεις θα ποικίλει , ανάλογα με την τεχνική ή το σύστημα συνθήκες ) :

int strcmp ( const char * str1 , const char * str2 ) {

char a, b ?

ενώ ( * str1 = ' \\ 0 ' && * str1 == * str2 ) {

str1 + + ? ! //μετακινεί το δείκτη του str1 εγχόρδων στον επόμενο χαρακτήρα

str2 + + ? //κάνει το ίδιο , str2

}

char a = * str1 ?

char b = * str2 ?

if ( a == b )

{ επιστροφή 0? }

άλλο

{ επιστροφή ( ( a


εισέρχονται δύο χορδές , όπως

char string1 [ 40 ] = " Αυτή είναι string" ?

char string2 [ 40 ] = "Αυτό είναι string" ?

int αποτέλεσμα = strcmp ( συμβολοσειρά1 , συμβολοσειρά2 ) ?

θα επιστρέψει 0 ?
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα