Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Σχετικά έγγραφα
Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

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

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

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

Προγραμματισμός Ι. Θεματική ενότητα 6: Πίνακες αλφαριθμητικά

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

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

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

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

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

Στόχοι και αντικείμενο ενότητας. Συντακτικό Γλώσσας. Αλφάβητο. #2.. Εισαγωγή στη C (Μέρος Πρώτο)

Ερωτήσεις αυτοαξιολόγησης τετραπλής επιλογής για το μάθημα Προγραμματισμός I.

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

C: Από τη Θεωρία στην Εφαρμογή

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

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

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

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

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

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

Προγραμματισμός Η/Υ. Ενότητα 2α: Εισαγωγή στη C (Μέρος Πρώτο)

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

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

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

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

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ερωτήσεις Επανάληψης

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Οντοκεντρικός Προγραμματισμός

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

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

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

Διάλεξη 5: Δείκτες και Συναρτήσεις

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

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

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

Ηλεκτρονικοί Υπολογιστές

Διδάσκων: Παναγιώτης Ανδρέου

Transcript:

Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του δείκτη Δήλωση και αρχικοποίηση δείκτη Ανάθεση τιμής σε δείκτη Περί αλφαριθμητικών δεδομένων Πίνακες χαρακτήρων Εισαγωγή και εκτύπωση αλφαριθμητικών Συναρτήσεις αλφαριθμητικών Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.1 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.2 Τύπος πίνακα Τύπος πίνακα (συν.) Συλλογή μεταβλητών του ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης Είναι από τις πιο βασικές δομές δεδομένων (data structures) Πετυχαίνεται γρήγορη πρόσβαση και προτιμούνται από άλλες δομές δεδομένων Παράδειγμα: μέσες μηνιαίες θερμοκρασίες ενός έτους τύπος όνομα (διεύθυνση) Μέγεθος πίνακα (πλήθος στοιχείων) τιμές float temp[12] = 1,12,13,17,2,25,3,31,3,27,2,17; Προσοχή στην αναφορά των στοιχείων ενός πίνακα 1 12 13 17 2 25 27 2 17 temp[] temp[1] temp[2]... temp[1] temp[11] Απόδοση αρχικής τιμής Αρχικοποίηση όλων των στοιχείων float grade[5] = 6.5,5,1,8,3.5; Μερική αρχικοποίηση float grade[5] = 6.5,5,1; /* αρχικοποιεί τα 3 πρώτα στοιχεία, αφήνοντας τα άλλα απροσδιόριστα */ Παράλειψη ορισμού του μεγέθους του πίνακα float grade[] = 6.5,5,1,8,3.5; Αρχικό (πρώτο) στοιχείο πίνακα grade[] 6.5 αναφερόμαστε στα στοιχεία ενός πίνακα με τον αριθμό που δηλώνει το δείκτη τους, π.χ. grade[3] Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.3 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.4

Αποθήκευση πινάκων στη μνήμη Παράδειγμα int temp[5]; temp[]=18; temp[2]=21; Στοιχεία πίνακα temp[4]=temp[]+12; temp[] 18 temp[1] temp[2] 21 temp[3] temp[4] 3 απροσδιόριστη απροσδιόριστη 4 bytes Διεύθυνση μνήμης FFC 1 14 18 1C 11 114 Τύπος πίνακα (συν.) Η επεξεργασία ενός πίνακα γίνεται ανά στοιχείο Παραδείγματα: printf( %d, x[]); x[3] = 8258; sum = x[] + x[1]; sum += x[2]; x[3] += 1; x[2] = x[] + x[1]; Αναφορά σε στοιχεία πίνακα (δείκτες πίνακα) Παραδείγματα: x[i] = ; x[i] = x[j]; x[j+k*4]= x[u] + 3; x[x[i]]= p; diff = x[y]-x[foo()]; total += x[i++]; πρόσβαση σε μη υπαρκτό στοιχείο ενός πίνακα μπορεί να οδηγήσει είτε στον τερματισμό του προγράμματος είτε (το πιθανότερο) σε λανθασμένα αποτελέσματα Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.5 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.6 Αρχικοποίηση πίνακα Παράλληλοι πίνακες Παραδείγματα /* αρχικοποίηση όλων των στοιχείων του πίνακα x σε */ #define MAX 1 int x[max], i; for(i=;i<max;++i) x[i]=; /* αρχικοποίηση στοιχείων πίνακα μέσω συνάρτησης */ #define MAX 1 void init_table(int x[], int size) int i; for(i=;i<size;++i) x[i]=; int main() int table[max]; init_table(table,max);. Περιέχουν συγγενείς πληροφορίες για το ίδιο σύνολο οντοτήτων Παράδειγμα: #define NUM_STUD 222 int stud_id [NUM_STUD]; float stud_aver [NUM_STUD]; Ο πίνακας stud_id περιέχει τους αριθμούς μητρώου των πρωτοετών φοιτητών του ακαδημαϊκού έτους 21-2, ενώ ο πίνακας stud_aver τους μέσους όρους από τη βαθμολογία των ασκήσεων του μαθήματος, για την ίδια ομάδα φοιτητών 1 2 221 stud_id 4345 4349 4995 421 1 2 221 stud_aver 2.12 6.14 4.56 7.8 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.7 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.8

Παράδειγμα (συν.) Παράλληλοι πίνακες (συν.) Πολυδιάστατοι πίνακες Πίνακες των οποίων κάθε στοιχείο είναι πίνακας #define NUM_STUD 222 void display_id_grade(int table_id[], float table_grade[], int size) int j; for(j=;j<size;++j) printf( Student with id: %d, grade: %f\n, table_id[j],table_grade[j]); main int stud_id [NUM_STUD]; float stud_aver [NUM_STUD]; display_id_grade(stud_id[], stud_aver[], NUM_STUD) Παράδειγμα: πίνακας βαθμολογίας με 222 στοιχεία (ένα για κάθε φοιτητή του Α έτους), όπου κάθε ένα από αυτά είναι ένας πίνακας 6 στοιχείων (ένα για κάθε μάθημα του συγκεκριμένου φοιτητή αυτό το εξάμηνο) float grade[222][6]; Που αναφέρονται οι παρακάτω εκφράσεις; grade[][5]; grade[1][]; grade[199][3]; Προτάσεις της μορφής grade[,5] (οι οποίες υπάρχουν σε γλώσσες όπως η Pascal και η Fortran) αντί του ορθού grade[][5]- οδηγούν συνήθως σε ανεπιθύμητα αποτελέσματα Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.9 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.1 Πολυδιάστατοι πίνακες (συν.) Ο τύπος του Δείκτη Αποθήκευση static int example[3][3] = 17,24,6, 5,16,4, 12,11,6 ; Αρχικοποίηση 17 12 16 11 static int new_example[5][3] = 1,2,3, 4, 1 2 3 5,6,7 4 ; 5 6 7 5 24 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.11 6 4 6 Από τις δυσκολότερες έννοιες της C Η χρήση τους αποτελεί αιτία δύσκολων στον εντοπισμό σφαλμάτων Η έννοια του δείκτη Κάθε μεταβλητή σχετίζεται με μια θέση στην κύρια μνήμη του Η/Υ (κάθε τέτοια θέση έχει τη δικιά της, ξεχωριστή διεύθυνση) Ο δείκτης δεν είναι τίποτε παραπάνω από μια μεταβλητή η οποία χρησιμοποιείται για την αποθήκευση μιας διεύθυνσης της κύριας μνήμης του Η/Υ Δήλωση δείκτη <όνομα τύπου> *<όνομα δείκτη>; Παράδειγμα: int *num_ptr; τύπος του στοιχείου που δείχνει ο δείκτης το όνομα του δείκτη τελεστής περιεχομένου - προσδιορίζει τη num_ptr ως (μεταβλητή) δείκτη Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.12

Ο τύπος του Δείκτη (συν.) Αρχικοποίηση δείκτη Ένας δείκτης πρέπει να δείχνει σε μια θέση μνήμης που ανήκει στο πρόγραμμα Ο τύπος του Δείκτη (συν.) Παράδειγμα (χρήση τελεστή διεύθυνσης &) int y = 5; int *yptr; yptr = &y; /* η yptr παίρνει τη διεύθυνση του y */ /* η yptr δείχνει στην ( points to ) y */ Αρχικοποίηση με άμεση διεύθυνση Πολύ «επικίνδυνες», πρέπει να αποφεύγονται num_ptr = 1; /* int *num_ptr = 1; */ yptr y 5 yptr 5 6 y 6 5 Αρχικοποίηση με διεύθυνση μεταβλητής ακεραίου τύπου (χρήση του τελεστή διεύθυνσης &) num_ptr = &num; /* int *num_ptr = &num; */ Η διεύθυνση του y είναι η τιμή του yptr Η *yptr επιστρέφει y (επειδή η yptr δείχνει στην y) Η πρόταση *yptr = 7; αλλάζει την τιμή του y σε 7 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.13 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.14 Ο τύπος του Δείκτη (συν.) Αλφαριθμητικά δεδομένα Παράδειγμα int num=1; int count=; int mcount=25; printf( %d\t %p\n, num, &num); printf( %p\t %p\n, &count, &num); 1 1 14 1 1 25 4 bytes Διεύθυνση μνήμης FFC 1 14 18 1C Ακολουθίες χαρακτήρων Ο ISBN κωδικός του βιβλίου σας είναι «96-85-79-» Η διεύθυνση ενός φοιτητή είναι «Γούναρη 234» Αποθήκευση και διαχείριση αλφαριθμητικών στη C Μέσω πινάκων Πίνακες χαρακτήρων που τερματίζουν με το μηδενικό (null) χαρακτήρα Ο μεταγλωττιστής θέτει αυτόματα στο τέλος του αλφαριθμητικού ένα μηδενικό χαρακτήρα για να προσδιορίσει το τέλος του Ο μηδενικός χαρακτήρας έχει ASCII κωδικό και αναπαρίσταται με την ακολουθία διαφυγής \ Παραδείγματα δηλώσεων char isbn[15], stud_address[3]; Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.15 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.16

Αλφαριθμητικά δεδομένα (συν.) Αποθήκευση H e Αρχικοποίηση char isbn[]= 96-85-79- ; Αλφαριθμητική σταθερά Εκτύπωση printf( Hello ); printf( O ISBN κωδικός είναι: %s\n, isbn); Εισαγωγή scanf( %s,isbn); l l o Χωρίς τελεστή & πριν το όνομα της μεταβλητής \ Αλφαριθμητικό Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.17 Ένα απλό παράδειγμα Ανάγνωση αλφαριθμητικού από την είσοδο και εκτύπωσή του #include<stdio.h> #define MAX_CHAR 8 main() char str[max_char]; int i; printf( Enter a string: ); scanf( %s, str); /* εναλλακτικά, scanf( %s, &str[]); */ for (i=;i<1;i++) printf( %s\n, str); exit(); Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.18 Συναρτήσεις χειρισμού αλφαριθμητικών Συνάρτηση μήκους αλφαριθμητικού strlen() Επιστρέφει τον αριθμό χαρακτήρων του αλφαριθμητικού (χωρίς να συμπεριλαμβάνει το μηδενικό χαρακτήρα) Παράδειγμα char name[12]= abcd ; printf( %d\n, strlen(name)); 4 Συναρτήσεις χειρισμού αλφαρ/κών (συν.) Συνάρτηση αντιγραφής αλφαριθμητικών strcpy() Αντιγράφει ένα αλφαριθμητικό από έναν πίνακα σε έναν άλλο Δέχεται δύο ορίσματα, το όνομα του πίνακα προορισμού (πρώτο όρισμα) και το όνομα του πίνακα πηγής (δεύτερο όρισμα) Παράδειγμα char name_1[12]= abcd ; char name_2[12]= ef ; strcpy(name_1,name_2); printf( %s\n, name_1); ef Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.19 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.2

Συναρτήσεις χειρισμού αλφαρ/κών (συν.) Συνάρτηση συνένωσης αλφαριθμητικών strcat() Δέχεται δύο ορίσματα, τα οποία συνενώνει «Προσθέτει» στο τέλος του αλφαριθμητικού που προσδιορίζεται από το πρώτο όρισμα τα στοιχεία του αλφαριθμητικού που προσδιορίζεται από το δεύτερο όρισμα Παράδειγμα char name_1[12]= abcd ; char name_2[12]= ef ; strcat(name_1,name_2); printf( %s\n, name_1); abcdef Ο πίνακας name_1 πρέπει να έχει κατάλληλο «μέγεθος», έτσι ώστε να χωράνε και τα στοιχεία του πίνακα name_2 Συναρτήσεις εισόδου/εξόδου χαρακτήρων int getchar() διαβάζει τον επόμενο χαρακτήρα από την είσοδο (και κινεί τον δρομέα στον επόμενο χαρακτήρα) void putchar(int) τυπώνει χαρακτήρα στη μονάδα εξόδου Παραδείγματα χρήσης Ανάγνωση σειράς χαρακτήρων απροσδιόριστου μεγέθους Αλγόριθμος; Υπολογισμός μεγέθους σειράς χαρακτήρων Αλγόριθμος; Υπολογισμός εμφανίσεων χαρακτήρων Αλγόριθμος; Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.21 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.22 Συναρτήσεις Ε/Ε χαρακτήρων (συν.) Ανάγνωση σειράς χαρακτήρων int c; c = getchar(); /* διάβασε τον πρώτο χαρακτήρα */ while(c!= EOF) /* όχι τέλος του αρχείου */ c = getchar(); /* διάβασε τον επόμενο χαρακτήρα */ Echo σειράς χαρακτήρων int c; c = getchar(); /* διάβασε τον πρώτο χαρακτήρα */ while(c!= EOF) /* όχι τέλος του αρχείου */ Συναρτήσεις Ε/Ε χαρακτήρων (συν.) Υπολογισμός μεγέθους σειράς χαρακτήρων int c; int size=; /* αρχικοποίηση */ c = getchar(); /* διάβασε τον πρώτο χαρακτήρα */ while(c!= EOF) /* όχι τέλος του αρχείου */ size=size+1; /* «υπολόγισε» άλλον ένα χαρακτήρα */ c = getchar(); /* διάβασε τον επόμενο χαρακτήρα */ putchar(c); /* τύπωσε χαρακτήρα */ c = getchar(); /* διάβασε τον επόμενο χαρακτήρα */ Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.23 Προγραμματισμός Η/Υ Διδάσκων: Νίκος Καρακαπιλίδης 6.24