Πρόγραμμα: decode.c
Γράψτε ένα πρόγραμμα που διαβάζει από την πρότυπη είσοδο (stdin) ένα κωδικοποιημένο (ως δεκαεξαδικοί χαρακτήρες) κείμενο και το τυπώνει στην πρότυπη έξοδο (stdout) αποκωδικοποιημένο. Με την δεκαεξαδική κωδικοποίηση κάθε δύο δεκαεξαδικά ψηφία αντιστοιχούν σε έναν χαρακτήρα. Για παράδειγμα τα ψηφία 4b αντιστοιχούν στον δεκαεξαδικό 0x4b που αντιστοιχούν στον χαρακτήρα ascii ‘K’. Η αποκωδικοποίηση του υπόλοιπου κειμένου συνεχίζει με τον ίδιο τρόπο. Οποιοσδήποτε χαρακτήρας εισόδου δεν είναι δεκαεξαδικός (a-f, A-F, 0-9) μπορεί να αγνοηθεί. Παράδειγμα εκτέλεσης ακολουθεί:
$ gcc -o decode decode.c
$ cat encoded_message.txt
4b65657020796F7572206661636520616C7761797320
746f77617264207468652073756e7368696e652c2061�
6e6420736861646f77732077696c6c2066616c6c2062
6568696e6420796f752e
$ ./decode < encoded_message.txt
Keep your face always toward the sunshine, and shadows will fall behind you.
Διαβάστε την είσοδο χαρακτήρα-χαρακτήρα με getchar και αγνοήστε ό,τι δεν είναι δεκαεξαδικό ψηφίο (και τις αλλαγές γραμμής). Μετατρέψτε κάθε ψηφίο στην τιμή του (0–15) και συνδυάστε ανά δύο: το πρώτο είναι τα υψηλά 4 bits. Σκεφτείτε τι κάνετε αν στο τέλος περισσέψει ένα μισό ζεύγος.
Αριθμός στον οδηγό: Α9.30
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: exam-2023-fall-ex8-q2 ·
Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2023-fall-ex8-q2.html ·
Markdown (GitHub)