Τι είναι το String in C;
Το String in C δεν είναι παρά μια συλλογή χαρακτήρων σε γραμμική ακολουθία. Το "C" αντιμετωπίζει πάντα μια συμβολοσειρά μεμονωμένα δεδομένα, παρόλο που περιέχει κενά διαστήματα. Ένας μεμονωμένος χαρακτήρας ορίζεται χρησιμοποιώντας αναπαράσταση μεμονωμένων εισαγωγών. Μια συμβολοσειρά αντιπροσωπεύεται με διπλά εισαγωγικά.
Example, "Welcome to the world of programming!"
Το «C» παρέχει τυπική βιβλιοθήκη
Σε αυτό το σεμινάριο, θα μάθετε-
- Πώς να δηλώσετε και να προετοιμάσετε μια συμβολοσειρά σε C
- Είσοδος συμβολοσειράς: Διαβάστε μια συμβολοσειρά
- Έξοδος συμβολοσειράς: Εκτύπωση / εμφάνιση συμβολοσειράς
- συνάρτηση fputs ()
- βάζει τη λειτουργία
- Η βιβλιοθήκη χορδών
- Μετατροπή συμβολοσειράς σε αριθμό
Πώς να δηλώσετε και να προετοιμάσετε μια συμβολοσειρά σε C
Το AC String είναι ένας απλός πίνακας με char ως τύπο δεδομένων. Η γλώσσα «C» δεν υποστηρίζει άμεσα τη συμβολοσειρά ως τύπο δεδομένων. Ως εκ τούτου, για να εμφανιστεί μια συμβολοσειρά σε C, πρέπει να χρησιμοποιήσετε έναν πίνακα χαρακτήρων.
Η γενική σύνταξη για τη δήλωση μιας μεταβλητής ως συμβολοσειρά σε C έχει ως εξής,
char string_variable_name [array_size];
Η κλασική δήλωση των χορδών μπορεί να γίνει ως εξής:
char string_name[string_length] = "string";
Το μέγεθος ενός πίνακα πρέπει να καθοριστεί κατά τη δήλωση μιας μεταβλητής C String επειδή χρησιμοποιείται για τον υπολογισμό πόσων χαρακτήρων πρόκειται να αποθηκευτούν μέσα στη μεταβλητή συμβολοσειράς στο C. Μερικά έγκυρα παραδείγματα δήλωσης συμβολοσειράς είναι τα εξής,
char first_name[15]; //declaration of a string variablechar last_name[15];
Το παραπάνω παράδειγμα αντιπροσωπεύει μεταβλητές συμβολοσειράς με μέγεθος πίνακα 15. Αυτό σημαίνει ότι ο δεδομένος πίνακας συμβολοσειράς C είναι ικανός να διατηρεί το πολύ 15 χαρακτήρες. Η ευρετηρίαση του πίνακα ξεκινά από το 0 και ως εκ τούτου θα αποθηκεύει χαρακτήρες από τη θέση 0-14. Ο μεταγλωττιστής C προσθέτει αυτόματα έναν χαρακτήρα NULL '\ 0' στη συστοιχία χαρακτήρων που δημιουργήθηκε.
Ας μελετήσουμε την αρχικοποίηση του String στο C. Το ακόλουθο παράδειγμα δείχνει την αρχικοποίηση του Strings στο C,
char first_name[15] = "ANTHONY";char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declarationchar string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/
Στη συμβολοσειρά3, ο χαρακτήρας NULL πρέπει να προστεθεί ρητά και οι χαρακτήρες περικλείονται σε εισαγωγικά.
Το «C» μας επιτρέπει επίσης να αρχικοποιήσουμε μια μεταβλητή συμβολοσειράς χωρίς να καθορίσουμε το μέγεθος του πίνακα χαρακτήρων. Μπορεί να γίνει με τον ακόλουθο τρόπο,
char first_name[ ] = "NATHAN";
Το όνομα του Strings in C ενεργεί ως δείκτης επειδή είναι βασικά ένας πίνακας.
Είσοδος συμβολοσειράς: Διαβάστε μια συμβολοσειρά
Κατά τη σύνταξη διαδραστικών προγραμμάτων που ζητούν από τον χρήστη να εισαγάγει, ο C παρέχει τις λειτουργίες σάρωσης (), παίρνει () και fgets () για να βρει μια γραμμή κειμένου που έχει εισαχθεί από τον χρήστη.
Όταν χρησιμοποιούμε το scanf () για ανάγνωση, χρησιμοποιούμε τον προσδιοριστή μορφής "% s" χωρίς να χρησιμοποιήσουμε το "&" για πρόσβαση στη μεταβλητή διεύθυνση, επειδή ένα όνομα πίνακα λειτουργεί ως δείκτης. Για παράδειγμα:
#includeint main() {char name[10];int age;printf("Enter your first name and age: \n");scanf("%s %d", name, &age);printf("You entered: %s %d",name,age);}
Παραγωγή:
Enter your first name and age:John_Smith 48
Το πρόβλημα με τη λειτουργία scanf είναι ότι δεν διαβάζει ποτέ ολόκληρες συμβολοσειρές στο C. Θα σταματήσει τη διαδικασία ανάγνωσης μόλις εμφανιστεί κενό διάστημα, τροφοδοσία φόρμας, κάθετη καρτέλα, νέα γραμμή ή επιστροφή μεταφοράς. Ας υποθέσουμε ότι δίνουμε είσοδο ως "Guru99 Tutorials", τότε η συνάρτηση scanf δεν θα διαβάσει ποτέ μια ολόκληρη συμβολοσειρά καθώς εμφανίζεται ένας χαρακτήρας στο διάστημα μεταξύ των δύο ονομάτων. Η λειτουργία σάρωσης θα διαβάσει μόνο το Guru99
Για να διαβάσετε μια συμβολοσειρά περιέχει κενά, χρησιμοποιούμε τη συνάρτηση get (). Παραβλέπει τα κενά. Σταματά να διαβάζει όταν επιτευχθεί μια νέα γραμμή (πατηθεί το πλήκτρο Enter). Για παράδειγμα:
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Παραγωγή:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Μια άλλη ασφαλέστερη εναλλακτική λύση για το get () είναι η λειτουργία fgets () που διαβάζει έναν καθορισμένο αριθμό χαρακτήρων. Για παράδειγμα:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Παραγωγή:
Enter your name plz: CarlosMy name is Carlos
Τα ορίσματα fgets () είναι:
- το όνομα της συμβολοσειράς,
- τον αριθμό των χαρακτήρων που πρέπει να διαβάσετε,
- stdin σημαίνει ανάγνωση από την τυπική είσοδο που είναι το πληκτρολόγιο.
Έξοδος συμβολοσειράς: Εκτύπωση / εμφάνιση συμβολοσειράς
Η τυπική λειτουργία printf χρησιμοποιείται για εκτύπωση ή εμφάνιση συμβολοσειρών σε C σε μια συσκευή εξόδου. Ο προσδιοριστής μορφής που χρησιμοποιείται είναι% s
Παράδειγμα,
printf("%s", name);
Η έξοδος συμβολοσειράς γίνεται με τις λειτουργίες fputs () και printf ().
συνάρτηση fputs ()
Τα fputs () χρειάζονται το όνομα της συμβολοσειράς και έναν δείκτη στο σημείο όπου θέλετε να εμφανίζεται το κείμενο. Χρησιμοποιούμε το stdout που αναφέρεται στην τυπική έξοδο για εκτύπωση στην οθόνη. Για παράδειγμα:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Παραγωγή:
Enter your town: New YorkNew York
βάζει τη λειτουργία
Η συνάρτηση put χρησιμοποιείται για την εκτύπωση συμβολοσειράς σε C σε μια συσκευή εξόδου και για τη μετακίνηση του δρομέα στην πρώτη θέση. Η λειτουργία put μπορεί να χρησιμοποιηθεί με τον ακόλουθο τρόπο
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Η σύνταξη αυτής της συνάρτησης είναι συγκριτικά απλή από άλλες συναρτήσεις.
Η βιβλιοθήκη χορδών
Η τυπική βιβλιοθήκη «C» παρέχει διάφορες λειτουργίες για τον χειρισμό των χορδών σε ένα πρόγραμμα. Αυτές οι λειτουργίες καλούνται επίσης ως χειριστές συμβολοσειρών. Όλοι αυτοί οι χειριστές υπάρχουν μέσα στο αρχείο κεφαλίδας
Λειτουργία | Σκοπός |
strlen () | Αυτή η λειτουργία χρησιμοποιείται για την εύρεση ενός μήκους μιας συμβολοσειράς. Επιστρέφει πόσους χαρακτήρες υπάρχουν σε μια συμβολοσειρά, εξαιρουμένου του χαρακτήρα NULL. |
strcat (str1, str2) | Αυτή η συνάρτηση χρησιμοποιείται για το συνδυασμό δύο χορδών μαζί για να σχηματίσουν μία μόνο συμβολοσειρά. Προσθέτει ή συνδυάζει το str2 στο τέλος του str1 και επιστρέφει ένα δείκτη στο str1. |
strcmp (str1, str2) | Αυτή η συνάρτηση χρησιμοποιείται για τη σύγκριση δύο χορδών μεταξύ τους. Επιστρέφει 0 εάν το str1 είναι ίσο με το str2, λιγότερο από 0 εάν str1 |
Ας εξετάσουμε το παρακάτω πρόγραμμα που δείχνει λειτουργίες βιβλιοθήκης συμβολοσειρών:
#include#include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}
Παραγωγή:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Άλλες σημαντικές λειτουργίες της βιβλιοθήκης είναι:
- strncmp (str1, str2, n): επιστρέφει 0 εάν οι πρώτοι χαρακτήρες n του str1 είναι ίσοι με τους πρώτους n χαρακτήρες του str2, λιγότερο από 0 εάν str1
str2. - strncpy (str1, str2, n) Αυτή η λειτουργία χρησιμοποιείται για την αντιγραφή μιας συμβολοσειράς από άλλη συμβολοσειρά. Αντιγράφει τους πρώτους n χαρακτήρες του str2 στο str1
- strchr (str1, c): επιστρέφει ένα δείκτη στην πρώτη εμφάνιση του char c στο str1 ή NULL εάν δεν βρεθεί χαρακτήρας.
- strrchr (str1, c): αναζητά το str1 αντίστροφα και επιστρέφει ένα δείκτη στη θέση του char c στο str1, ή NULL εάν δεν βρεθεί χαρακτήρας.
- strstr (str1, str2): επιστρέφει ένα δείκτη στην πρώτη εμφάνιση του str2 στο str1, ή NULL εάν δεν βρέθηκε το str2.
- strncat (str1, str2, n) Προσθέτει (συνενώνει) τους πρώτους n χαρακτήρες του str2 στο τέλος του str1 και επιστρέφει έναν δείκτη στο str1.
- strlwr (): για να μετατρέψετε τη συμβολοσειρά σε πεζά
- strupr (): για να μετατρέψετε τη συμβολοσειρά σε κεφαλαία
- strrev (): για αντιστροφή συμβολοσειράς
Μετατροπή συμβολοσειράς σε αριθμό
Στον προγραμματισμό C, μπορούμε να μετατρέψουμε μια σειρά αριθμητικών χαρακτήρων σε αριθμητική τιμή για να αποτρέψουμε ένα σφάλμα χρόνου εκτέλεσης. Η βιβλιοθήκη stdio.h περιέχει τις ακόλουθες λειτουργίες για τη μετατροπή μιας συμβολοσειράς σε έναν αριθμό:
- int atoi (str) σημαίνει ASCII σε ακέραιο? μετατρέπει str στην ισοδύναμη τιμή int. Το 0 επιστρέφεται εάν ο πρώτος χαρακτήρας δεν είναι αριθμός ή δεν εμφανίζονται αριθμοί.
- double atof (str) Υποστηρίζει το ASCII να επιπλέει, μετατρέπει το str στην ισοδύναμη διπλή τιμή. Το 0,0 επιστρέφεται εάν ο πρώτος χαρακτήρας δεν είναι αριθμός ή δεν εμφανίζονται αριθμοί.
- long int atol (str) σημαίνει ASCII σε long int, Μετατρέπει str στην ισοδύναμη τιμή ακέραιου μήκους. Το 0 επιστρέφεται εάν ο πρώτος χαρακτήρας δεν είναι αριθμός ή δεν υπάρχουν αριθμοί.
Το παρακάτω πρόγραμμα δείχνει τη συνάρτηση atoi ():
#includeint main(){char *string_id[10];int ID;printf("Enter a number: ");gets(string_id);ID = atoi(string_id);printf("you enter %d ",ID);return 0;}
Παραγωγή:
Enter a number: 221348you enter 221348
- Μια δήλωση δείκτη συμβολοσειράς, όπως char * string = "language" είναι μια σταθερά και δεν μπορεί να τροποποιηθεί.
Περίληψη
- Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων που είναι αποθηκευμένοι σε έναν πίνακα χαρακτήρων.
- Μια συμβολοσειρά είναι ένα κείμενο που περικλείεται σε διπλά εισαγωγικά.
- Ένας χαρακτήρας όπως το «d» δεν είναι συμβολοσειρά και υποδεικνύεται με μεμονωμένα εισαγωγικά.
- Το «C» παρέχει τυπικές λειτουργίες βιβλιοθήκης για χειρισμό συμβολοσειρών σε ένα πρόγραμμα. Οι χειριστές συμβολοσειρών αποθηκεύονται σε
αρχείο κεφαλίδας. - Μια συμβολοσειρά πρέπει να δηλωθεί ή να αρχικοποιηθεί πριν χρησιμοποιηθεί σε ένα πρόγραμμα.
- Υπάρχουν διαφορετικές λειτουργίες συμβολοσειράς εισόδου και εξόδου, κάθε μία από αυτές έχει τα χαρακτηριστικά της.
- Μην ξεχάσετε να συμπεριλάβετε τη βιβλιοθήκη συμβολοσειρών για να εργαστείτε με τις λειτουργίες της
- Μπορούμε να μετατρέψουμε συμβολοσειρά σε αριθμό μέσω των atoi (), atof () και atol () που είναι πολύ χρήσιμα για τις διαδικασίες κωδικοποίησης και αποκωδικοποίησης.
- Μπορούμε να χειριστούμε διαφορετικές συμβολοσειρές καθορίζοντας μια σειρά συμβολοσειρών στο C.