Πρόγραμμα: frame.c
Γράψτε ένα πρόγραμμα που διαβάζει από την πρότυπη είσοδο (stdin) ένα κείμενο λατινικών χαρακτήρων και το τυπώνει στην πρότυπη έξοδο (stdout) εντός ενός τετράγωνου κάδρου. Το κάδρο αποτελείται από τον χαρακτήρα ‘*’ (42 στο δεκαδικό). Το πρόγραμμά σας πρέπει να μπορεί να χειριστεί οποιονδήποτε αριθμό γραμμών κάθε μία από τις οποίες μπορεί να είναι οποιουδήποτε μεγέθους. Παράδειγμα εκτέλεσης ακολουθεί:
$ cat message.txt
One Ring to
Rule them all
One Ring to
find them
One Ring to
Bring them all
and in the darkness
Bind them
$ gcc -o frame frame.c
$ ./frame < message.txt
*********************
* One Ring to *
* Rule them all *
* One Ring to *
* find them *
* One Ring to *
* Bring them all *
*and in the darkness*
* Bind them *
*********************
Το πλάτος του κάδρου εξαρτάται από τη μεγαλύτερη γραμμή, άρα πρέπει να διαβάσετε όλη την είσοδο πριν τυπώσετε οτιδήποτε. Δεν ξέρετε εκ των προτέρων πόσες γραμμές ή πόσο μεγάλη θα είναι η καθεμία, οπότε χρειάζεστε δυναμικούς πίνακες που μεγαλώνουν με realloc. Κάθε γραμμή συμπληρώνεται με κενά ως το μέγιστο μήκος.
Αριθμός στον οδηγό: Α13.11
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: exam-2023-fall-ex9-q4 ·
Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2023-fall-ex9-q4.html ·
Markdown (GitHub)