Χpήσιµες Βιβλιοθήκες της γλώσσας C



Σχετικά έγγραφα
Μεθόδων Επίλυσης Προβλημάτων

Επεξεργασία Αρχείων Κειµένου

Η γλώσσα C. Διαχείριση Συμβολοσειρών

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Η γλώσσα προγραμματισμού C

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Η γλώσσα προγραμματισμού C

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

είκτες και Πίνακες (2)

Η γλώσσα προγραμματισμού C

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

Ανάπτυξη και Σχεδίαση Λογισμικού

Συναρτήσεις διαχείρισης αλφαριθμητικών

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Μεταβλητές τύπου χαρακτήρα

Προγραμματισμός Ι (ΗΥ120)

Επανάληψη για τις Τελικές εξετάσεις

Μεθόδων Επίλυσης Προβλημάτων

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Διάλεξη 8η: Αλφαριθμητικά (strings)

Δομημένος Προγραμματισμός

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Η γλώσσα C. Διαχείριςη Συμβολοςειρών

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

Μεθόδων Επίλυσης Προβλημάτων

Δομημένος Προγραμματισμός

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Επεξεργασία κειμένου και συμβολοσειρών σε C

char name[5]; /* define a string of characters */

Προγραμματισμό για ΗΜΥ

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

scanf() scanf() stdin scanf() printf() int float double %lf float

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εργαστήριο 9: Αρχεία

Τύποι Δεδομένων Είσοδος/Έξοδος

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Η γλώσσα προγραμματισμού C

12. Συναρτήσεις (Μέρος ΙI)

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Εισαγωγή στον Προγραμματισμό

Μεθόδων Επίλυσης Προβλημάτων

Εισαγωγή στον δομημένο προγραμματισμό

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Μεθόδων Επίλυσης Προβλημάτων

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Αρχές Προγραμματισμού

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διαδικασιακός Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Μεθόδων Επίλυσης Προβλημάτων

Συμβολοσειρές. 1 Συμβολοσειρές. 6 Απριλίου 2014

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 1 Συμβολοσειρές, Πίνακες, Δείκτες

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp)

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

Μεθόδων Επίλυσης Προβλημάτων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Προγραμματισμός Ι (ΗΥ120)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Transcript:

Χpήσιµες Βιβλιοθήκες της γλώσσας C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Επεξεργασίας Συµβολοσειρών (strings) που Παρέχονται από τη Βιβλιοθήκη <string.h> Συναρτήσεις Ελέγχου και Μετατροπής Τύπων εδοµένων ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1

Συναρτήσεις Επεξεργασίας Συµβολοσειρών Όπως έχουµε αναφέρει, µία συµβολοσειρά είναι ένας πίνακας χαρακτήρων στον οποίο τοποθετείται τελευταίος ο χαρακτήρας null ( \0 ), ως ένδειξη του τέλους της συµβολοσειράς. char line[8]; Mπορούµε να χειριστούµε µια συµβολοσειρά µε δύο τρόπους. 1. Αντιµετώπιση της συµβολοσειράς ως έναν πίνακα: line[0] = H ; line[1]= e ; line[3] = l ; line[4]= l ; line[5] = o ; line[6]= \0 ; Αυτό όµως συνεπάγεται σχετική κούραση και δυσκολία. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2

Συναρτήσεις Επεξεργασίας Συµβολοσειρών (συν.) 2. Ο δεύτερος τρόπος ο οποίος προτείνεται είναι µέσω της χρήσης ειδικών συναρτήσεων βιβλιοθήκης που παρέχει η C για επεξεργασία συµβολοσειρών. H σχετική επικεφαλίδα είναι η <string.h>. #include <string.h> char line[8]; strcpy(line, Hello ); Αυτός ο τρόπος για επεξεργασία των συµβολοσειρών κάνει την ασχολία µε συµβολοσειρές εύκολη (σχετικά) υπόθεση. Απαιτείται όµως η αποµνηµόνευση των (βασικών έστω) συναρτήσεων που παρέχει η δεδοµένη βιβλιοθήκη. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 3

Συναρτήσεις Επεξεργασίας Συµβολοσειρών (συν.) Βασικές συναρτήσεις επεξεργασίας συµβολοσειρών: 1. char *strcpy(s1, s2) Η συνάρτηση αυτή αντιγράφει τη συµβολοσειρά s2 στην s1 συµπεριλαµβανοµένου και του χαρακτήρα \0. Επιστρέφει το s1. 2. char *strncpy(s, t, n) Η συνάρτηση αυτή αντιγράφει το πολύ n χαρακτήρες από τη συµβολοσειρά t στην s. Επιστρέφει το s. 3. char *strcat(s, t) Η συνάρτηση αυτή προσθέτει στο τέλος της συµβολοσειράς s το string t. Επιστρέφει το s. 4. char *strncat(s, t, n) Η συνάρτηση αυτή προσθέτει στο τέλος της συµβολοσειράς s το πολύ n χαρακτήρες από τη συµβολοσειρά t και τοποθετεί επίσης και τον χαρακτήρα \0. Επιστρέφει το s. 5. int strcmp(s, t) Η συνάρτηση αυτή συγκρίνει τα δύο strings. Επιστρέφει <0 αν s<t, 0 αν s==t ή >0 αν s>t. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 4

Συναρτήσεις Επεξεργασίας Συµβολοσειρών (συν.) 6. int strncmp(s, t, n) Η συνάρτηση αυτή συγκρίνει το πολύ n χαρακτήρες από το string s µε το string t. Επιστρέφει <0 αν s<t, 0 αν s==t ή >0 αν s>t. 7. char *strpbrk(s, t) Η συνάρτηση αυτή επιστρέφει ένα δείκτη στην πρώτη εµφάνιση στο s οποιουδήποτε χαρακτήρα περιέχεται στο string t, η NULL αν δεν υπάρχει κανένας τέτοιος χαρακτήρας στο s. 8. char *strstr(s, t) Η συνάρτηση αυτή επιστρέφει ένα δείκτη στην πρώτη εµφάνιση στο s της συµβολοσειράς t, η NULL αν το t δεν περιέχεται στο s. 9. int strlen(s) Η συνάρτηση αυτή επιστρέφει το µήκος της συµβολοσειράς s. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 5

Έστω Παρaδείγµατα char a[20] = Kαληµέρα, ; char b[20] = Kαλό µάθηµα! ; Tότε printf( %s, strcpy(a, b)), θα τυπώσει Καλό µάθηµα! printf( %s, strncpy(a, b, 4)), θα τυπώσει Καλόµέρα, printf( %s, strcat(a, b)), θα τυπώσει Καληµέρα, Καλό µάθηµα! printf( %d, strcmp(a, b)), θα τυπώσει κάποια αρνητική τιµή. printf( %s, strpbr(a, ιηυ )), θα τυπώσει ηµέρα,. printf( %s, strstr(a, ηµ )), θα τυπώσει ηµέρα,. printf( %d, strlen(a)), θα τυπώσει 10. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 6

Συναρτήσεις Επεξεργασίας Συµβολοσειρών (συν.) 10. char *strtok(s, t) Η συνάρτηση αυτή ψάχνει στο s για tokens τα οποία διαχωρίζονται µε τους χαρακτήρες που περιγράφονται στο t. Κάθε διαφορετική κλήση της συνάρτησης αυτής επιστρέφει και ένα καινούργιο token. Πιο συγκεκριµένα, η πρώτη κλήση της ακολουθίας έχει σαν πρώτο όρισµα ένα συγκεκριµένο string s. Βρίσκει το πρώτο token που αποτελείται απο χαρακτήρες οι οποίοι δεν περιέχονται στο t, τερµατίζει το token αυτό µε τον χαρακτήρα \0 και τέλος επιστρέφει τον δείκτη προς αυτό το token. Για να βρούµε τα επόµενα tokens που περιέχονται στο s καλούµε επαναληπτικά την συνάρτηση strtok() αλλά τοποθετούµε στη θέση του s την τιµή NULL. Αν δεν υπάρχουν άλλα tokens στο s η συνάρτηση επιστρέφει την τιµή NULL. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 7

Παράδειγµα Na γράψετε πρόγραµµα το οποίο λαµβάνει διευθύνσεις ηλεκτρονικού ταχυδροµείου και επιστρέφει τα πεδία από τα οποία αποτελούνται. Σχετικό παράδειγµα εκτέλεσης $ a.out Please type in an email address: annnap@ucy.ac.cy The fields of this address are: annnap, ucy, ac, cy ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 8

#include <stdio.h> #include <string.h> Παράδειγµα (συν.) int main(void){ char email[] = "user@ucy.ac.cy"; char token[] = "@."; char *c; printf("please type in an email address: "); scanf("%s", email); printf("the fields of this address are: "); c = strtok(email, token); if (c!= NULL) printf("%s", c); while ((c = strtok(null, token))!= NULL) printf(", %s", c); } printf("\n"); ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 9

Συναρτήσεις Επεξεργασίας Συµβολοσειρών (συν.) 11. int sprintf(char *s, const char *format, ) Η συνάρτηση αυτή λειτουργεί ακριβώς όπως η printf() µε τη διαφορά ότι η έξοδος δεν κατευθύνεται προς την οθόνη αλλά φυλάσεται στο string s στο οποίο τοποθετείται επιπλέον και ο χαρακτήρας \0. Επιστρέφεται ο αριθµός των χαρακτήρων που φυλάσσονται στο s πλην του χαρακτήρα \0. 12. int sscanf(char *s, const char *format, ) Η συνάρτηση αυτή λειτουργεί ακριβώς όπως η scanf() µε τη διαφορά ότι η είσοδος των δεδοµένων προέρχεται από το string s και όχι από την οθόνη. Επιστρέφει EOF σε περίπτωση λάθους, ή τον αριθµό των αντικειµένων που ενηµερώθηκαν. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 10

Συναρτήσεις Ελέγχου και Μετατροπής Τύπων Πιο κάτω δίνονται µερικές χρήσιµες συναρτήσεις ελέγχου τύπων οι οποίες βρίσκονται στη βιβλιοθήκη <ctype.h>. Οι συναρτήσεις αυτές παίρνουν όρισµα ένα ακέραιο ο οποίος αντιπροσωπεύει έναν χαρακτήρα στον πίνακα ASCII και επιστρέφουν έναν µη-µηδενικό ακέραιο (true) αν ο χαρακτήρας c ικανοποιεί τη συνθήκη ή µηδέν αν δεν την ικανοποιεί. 1. isalnum(c) δίνει true αν ο c είναι γράµµα ή ψηφίο 2. isalpha(c) δίνει true αν ο c είναι γράµµα 3. iscntrl(c) δίνει true αν ο c είναι control χαρακτήρας 4. isdigit(c) δίνει true αν ο c είναι ψηφίο 5. islower(c) δίνει true αν ο c είναι γράµµα µικρό 6. isspace(c) δίνει true αν ο c είναι ο χαρακτήρας space 7. isupper(c) δίνει true αν ο c είναι γράµµα κεφαλαίο ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 11

Συναρτήσεις Ελέγχου και Μετατροπής Τύπων Μερικές χρήσιµες συναρτήσεις µετατροπής τύπων οι οποίες βρίσκονται στη βιβλιοθήκη <stdlib.h> είναι οι ακόλουθες: 1. double atof(char *s) Η συνάρτηση αυτή µετατρέπει τη συµβολοσειρά s σε έναν αριθµό τύπου double. 2. int atoi(char *s) Η συνάρτηση αυτή µετατρέπει τη συµβολοσειρά s σε έναν αριθµό τύπου ακέραιο. 3. long atol(char *s) Mετατρέπει το s σε αριθµό τύπου long. Άσκηση: Να υλοποιήσετε ένα πρόγραµµα σε C το οποίο να παίρνει ένα σύνολο παραµέτρων. Το πρόγραµµα αυτό θα πρέπει να µετράει πόσες φορές συναντιέται η τελευταία λέξη στα υπόλοιπα ορίσµατα και να εκτυπώνει τον αριθµό αυτό. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 12