Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions labs/lab08/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,27 @@

## Άσκηση 1: Επεξεργασία συμβολοσειρών - (string.c)

**1.1** Υλοποιήστε τη συνάρτηση `int mystrlen(char *str)` η οποία δέχεται σαν όρισμα μία συμβολοσειρά και επιστρέφει το μήκος της (χωρίς να συμπεριλαμβάνεται ο χαρακτήρας τέλους συμβολοσειράς `'\0'`).

**1.2** Υλοποιήστε τη συνάρτηση `char *mystrcat(char *s1, char *s2)` η οποία προσαρτά ένα αντίγραφο της συμβολοσειράς `s2` στο τέλος της s1 και επιστρέφει στο όνομά της έναν δείκτη στην `s1`.

**1.3** Κατασκευάστε το πρόγραμμα `string.c`, το οποίο θα συμπεριλαμβάνει
**1.1** Κατασκευάστε το πρόγραμμα `string.c`, το οποίο θα συμπεριλαμβάνει
το αρχείο επικεφαλίδας `string.h` και θα πραγματοποιεί το σενάριο που
ακολουθεί. Επίσης, ενσωματώστε στο πρόγραμμα και τις συναρτήσεις που
υλοποιήσατε στην προηγούμενη άσκηση.
ακολουθεί.

**1.3.1** Ορίστε τις συμβολοσειρές `strA` και `strB` με στατική ή δυναμική
**1.2** Ορίστε τις συμβολοσειρές `strA` και `strB` με στατική ή δυναμική
δέσμευση μνήμης 80 χαρακτήρων.

**1.3.2** Αντιγράψτε στην `strA` τη συμβολοσειρά `"This is a string."` και στην `strB` τη συμβολοσειρά `"This is another string."` χρησιμοποιώντας την συνάρτηση `strcpy`.
**1.3** Αντιγράψτε στην `strA` τη συμβολοσειρά `"This is a string."` και στην `strB` τη συμβολοσειρά `"This is another string."` χρησιμοποιώντας την συνάρτηση `strcpy`.

```c
char *strcpy(char *s1, const char *s2)
```

Η συνάρτηση `strcpy` αντιγράφει τη συμβολοσειρά `s2` στην `s1` και επιστρέφει την τιμή του δείκτη (char *) στον οποίο έκανε την αντιγραφή (σε αυτό το παράδειγμα επιστρέφει την τιμή της μεταβλητής `s1`). Χρησιμοποιώντας την `printf("%p %p %p\n", ...)` τυπώστε τους τρεις δείκτες που συμμετέχουν στην κλήση αυτής της συνάρτησης (`s1`, `s2` και την τιμή επιστροφής της `strcpy`).

**1.3.3** Εκτυπώστε τις δύο συμβολοσειρές και το μήκος τους. Υπολογίστε
**1.4** Υλοποιήστε τη συνάρτηση `int mystrlen(char *str)` η οποία δέχεται σαν όρισμα μία συμβολοσειρά και επιστρέφει το μήκος της (χωρίς να συμπεριλαμβάνεται ο χαρακτήρας τέλους συμβολοσειράς `'\0'`).

**1.5** Υλοποιήστε τη συνάρτηση `char *mystrcat(char *s1, char *s2)` η οποία προσαρτά ένα αντίγραφο της συμβολοσειράς `s2` στο τέλος της s1 και επιστρέφει στο όνομά της έναν δείκτη στην `s1`.

**1.6** Εκτυπώστε τις δύο συμβολοσειρές και το μήκος τους. Υπολογίστε
το μήκος της `strA` μέσω της συνάρτησης `mystrlen` που υλοποιήσατε στην
άσκηση 1 και το μήκος της `strB` μέσω της συνάρτησης `strlen` της C.

Expand All @@ -40,7 +40,7 @@

Η συνάρτηση `strlen` επιστρέφει στο όνομα της το μήκος της συμβολοσειράς `s` (χωρίς να μετράται το τελικό `'\0'`).

**1.3.4** Συγκρίνετε αλφαβητικά τις συμβολοσειρές `strA` και `strB`
**1.7** Συγκρίνετε αλφαβητικά τις συμβολοσειρές `strA` και `strB`
εκτυπώνοντας κατάλληλο μήνυμα.

```c
Expand All @@ -54,7 +54,7 @@
2. `> 0`, αν η `s1` είναι λεξικογραφικά «μεγαλύτερη» της `s2`
3. `< 0`, αν η `s1` είναι λεξικογραφικά «μικρότερη» της `s2`

**1.3.5** Προσαρτήστε τη συμβολοσειρά `strB` στο τέλος της `strA`
**1.8** Προσαρτήστε τη συμβολοσειρά `strB` στο τέλος της `strA`
(χρησιμοποιώντας τη συνάρτηση `mystrcat` που υλοποιήσατε παραπάνω)
και εκτυπώστε το αποτέλεσμα της προσάρτησης. Στη συνέχεια, προσαρτήστε
τη νέα τιμή της συμβολοσειράς `strA` στο τέλος της `strB` (χρησιμοποιώντας
Expand All @@ -67,7 +67,7 @@
Η `strcat` προσαρτά / συνενώνει (concatenates) ένα αντίγραφο της συμβολοσειράς `s2` στο τέλος της `s1` και
επιστρέφει στο όνομά της έναν δείκτη στην `s1`.

**1.3.6** Χρησιμοποιήστε τη συνάρτηση `strtok` για να εκτυπώσετε μία προς
**1.9** Χρησιμοποιήστε τη συνάρτηση `strtok` για να εκτυπώσετε μία προς
μία τις λέξεις που εμφανίζονται στην τελική συμβολοσειρά `strB`, χωρίς
τους χαρακτήρες στίξης.

Expand Down