Πώς να χωρίσετε τις συμβολοσειρές με το strtok() στον προγραμματισμό C;

Pos Na Chorisete Tis Symboloseires Me To Strtok Ston Programmatismo C



Σχισίματα χορδών είναι σημαντική για διάφορους λόγους, όπως η επεξεργασία κειμένου, η ανάλυση δεδομένων ή η ανάλυση, και η γλώσσα προγραμματισμού C προσφέρει πολλούς τρόπους για να χειριστείτε αυτήν την εργασία. Ωστόσο, η πιο δημοφιλής συνάρτηση C που επιτρέπει σπάσιμο χορδής σε πολλαπλά διακριτικά από έναν καθορισμένο οριοθέτη είναι strtok() . Ως συνάρτηση βιβλιοθήκης, είναι διαθέσιμη στην τυπική βιβλιοθήκη C που υποστηρίζει λειτουργίες συμβολοσειράς.

Πώς λειτουργεί η συνάρτηση strtok();

Για να χωρίσετε μια συμβολοσειρά χρησιμοποιώντας strtok() , πρέπει πρώτα να καταλάβετε πώς λειτουργεί. ο strtok() διαβάζει τη συμβολοσειρά εισαγωγής χαρακτήρα προς χαρακτήρα μέχρι να συναντήσει έναν οριοθέτη. Μόλις βρεθεί ένας οριοθέτης, strtok() το αντικαθιστά με έναν μηδενικό χαρακτήρα «\0», χωρίζοντας ουσιαστικά την αρχική συμβολοσειρά σε δύο μέρη. Στη συνέχεια, επιστρέφεται ένας δείκτης στον πρώτο χαρακτήρα της συμβολοσειράς από τη συνάρτηση. ο strtok() η σύνταξη της συνάρτησης είναι:

strtok ( απανθρακώνω * str , συνθ απανθρακώνω * μοιράζομαι ) ;

ο strtok() Η συνάρτηση παίρνει δύο ορίσματα - έναν δείκτη στο πρώτο διακριτικό στο σύνολο των διακριτικών και μια συμβολοσειρά που περιέχει τους χαρακτήρες οριοθέτησης. Επιστρέφει έναν δείκτη στο επόμενο διακριτικό, το οποίο ξεκινά αμέσως μετά τον οριοθέτη που χώρισε το τελευταίο διακριτικό. Επιστρέφει NULL εάν δεν υπάρχουν άλλα διακριτικά.







Πώς να χωρίσετε τις συμβολοσειρές με το Strtok() στον προγραμματισμό C;

Εδώ είναι ένα παράδειγμα του τρόπου χρήσης strtok() για να χωρίσετε μια συμβολοσειρά:



#include

#include

ενθ κύριος ( ) {

απανθρακώνω εισαγωγή [ ] = 'Linux, Hint' ;

απανθρακώνω * ένδειξη ;

ένδειξη = strtok ( εισαγωγή , ',' ) ;

ενώ ( ένδειξη != ΜΗΔΕΝΙΚΟ ) {

printf ( '%μικρό \n ' , ένδειξη ) ;

ένδειξη = strtok ( ΜΗΔΕΝΙΚΟ , ',' ) ;

}

ΕΠΙΣΤΡΟΦΗ 0 ;

}

Στο παραπάνω παράδειγμα, αρχικά δηλώνουμε έναν δείκτη σε έναν χαρακτήρα. Στη συνέχεια χρησιμοποιούμε strtok() για να χωρίσετε τη συμβολοσειρά εισόδου σε διακριτικά. Η πρώτη κλήση του strtok() παίρνει δύο ορίσματα: τη συμβολοσειρά εισόδου και τη συμβολοσειρά οριοθέτη ','. Το πρώτο διακριτικό, 'Linux', είναι αυτό που strtok() επιστρέφει ως δείκτης σε . Στη συνέχεια χρησιμοποιούμε έναν βρόχο while για επανάληψη μέσω της συμβολοσειράς εισόδου, χρησιμοποιώντας strtok() με έναν δείκτη NULL για να συνεχίσετε να χωρίζετε τα υπόλοιπα διακριτικά. Η συμβολοσειρά οριοθέτη μεταβιβάζεται ξανά ως όρισμα στο strtok() για να υποδείξετε τους χαρακτήρες οριοθέτησης.



Παραγωγή





Περιορισμοί της συνάρτησης Strtok().

1: Τροποποιεί την αρχική συμβολοσειρά

ο strtok() Η συνάρτηση δεν επιστρέφει αντίγραφο της συμβολοσειράς. Αντίθετα, τροποποιεί την αρχική συμβολοσειρά. Επομένως, εάν χρειάζεται να έχετε μια μη τροποποιημένη έκδοση της συμβολοσειράς μετά τον διαχωρισμό της, θα πρέπει να δημιουργήσετε ένα αντίγραφο της αρχικής συμβολοσειράς πριν την επίκληση strtok() .



2: Ασύγχρονη

Ένας σημαντικός περιορισμός του strtok() είναι ότι μπορεί να χρησιμοποιηθεί μόνο σε μία συμβολοσειρά κάθε φορά. Με άλλα λόγια, δεν μπορείτε να το χρησιμοποιήσετε για να κάνετε tokening πολλαπλών συμβολοσειρών ταυτόχρονα.

3: Περιορισμένη χωρητικότητα

Ένας άλλος πιθανός περιορισμός είναι αυτός strtok() έχει περιορισμένη ικανότητα να χειρίζεται επαναλαμβανόμενους οριοθέτες. Για παράδειγμα, εάν η συμβολοσειρά σας έχει διαδοχικά κενά μεταξύ των λέξεων, strtok() το αντιμετωπίζει ως ενιαίο οριοθέτη. Για να χειριστείτε τέτοιες περιπτώσεις, θα πρέπει να χρησιμοποιήσετε μια διαφορετική προσέγγιση.

συμπέρασμα

ο strtok() Η συνάρτηση είναι μια πολύ χρήσιμη συνάρτηση για τον διαχωρισμό συμβολοσειρών στον προγραμματισμό C. Παίρνει μια συμβολοσειρά εισόδου και μια συμβολοσειρά οριοθέτη και επιστρέφει έναν δείκτη στο πρώτο διακριτικό που βρίσκεται στη συμβολοσειρά εισόδου. strtok() είναι καταστροφικό, επομένως, εάν χρειάζεται να διατηρήσετε την ακεραιότητα της αρχικής συμβολοσειράς, συνιστάται να δημιουργήσετε ένα αντίγραφό της. Τώρα που ξέρετε πώς να το κάνετε, μπορείτε να κόψετε οποιοδήποτε κορδόνι σε μικρότερα κομμάτια για επεξεργασία.