Πρόγραμμα: hex.c (25 μονάδες)
Γράψτε ένα πρόγραμμα που διαβάζει το κείμενο που δίνεται από την πρότυπη είσοδο (stdin) και τυπώνει τον κάθε χαρακτήρα στην πρότυπη έξοδο (stdout) σε δεκαεξαδική μορφή χωρίζοντάς το σε γραμμές. Σε κάθε γραμμή πρέπει να τυπώνονται μέχρι 16 χαρακτήρες σε δεκαεξαδική μορφή και πρέπει να υπάρχει ένας κενός χαρακτήρας (‘ ‘) ανάμεσα σε κάθε χαρακτήρα στην ίδια γραμμή. Παράδειγμα εκτέλεσης:
$ cat domo.txt
どうもありがと Mr. Roboto�
You're wondering who I am (secret, secret, I've got a secret)
Machine or mannequin? (Secret, secret, I've got a secret)
$ gcc -o hex hex.c
$ ./hex < domo.txt
e3 81 a9 e3 81 86 e3 82 82 e3 81 82 e3 82 8a e3
81 8c e3 81 a8 20 4d 72 2e 20 52 6f 62 6f 74 6f
ff 0a 59 6f 75 27 72 65 20 77 6f 6e 64 65 72 69
6e 67 20 77 68 6f 20 49 20 61 6d 20 28 73 65 63
72 65 74 2c 20 73 65 63 72 65 74 2c 20 49 27 76
65 20 67 6f 74 20 61 20 73 65 63 72 65 74 29 0a
4d 61 63 68 69 6e 65 20 6f 72 20 6d 61 6e 6e 65
71 75 69 6e 3f 20 28 53 65 63 72 65 74 2c 20 73
65 63 72 65 74 2c 20 49 27 76 65 20 67 6f 74 20
61 20 73 65 63 72 65 74 29 0a
Το αρχείο εισόδου: domo.txt.
Διαβάστε byte προς byte με getchar και τυπώστε το καθένα με printf και την κατάλληλη μορφή για δύο δεκαεξαδικά ψηφία. Ένας μετρητής σάς λέει πότε συμπληρώθηκαν 16 και χρειάζεται αλλαγή γραμμής· προσέξτε στο παράδειγμα πού ακριβώς μπαίνουν τα κενά και τι γίνεται με την τελευταία, ημιτελή γραμμή. Το byte ff δείχνει ότι η είσοδος δεν είναι απαραίτητα έγκυρο κείμενο.
Αριθμός στον οδηγό: Α9.19
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: exam-2023-fall-ex1-q1 ·
Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2023-fall-ex1-q1.html ·
Markdown (GitHub)