>> DAVID J. MALAN: Ας υποθέσουμε ότι θα ήθελα να εφαρμόσει ένα πρόγραμμα που ζητά
ο χρήστης για μια σειρά και στη συνέχεια προχωρά να αξιοποιήσει τη συμβολή τους,
μετατροπή τυχόν πεζά γράμματα ότι πληκτρολογείτε με κεφαλαία γράμματα.
Λοιπόν, ας πάμε μπροστά και υλοποίηση του προγράμματος.
>> Ας πρώτα περιλαμβάνουν cs50.h ακολουθείται από περιλαμβάνουν stdio.h.
Και έτσι ώστε να μπορούμε να χρησιμοποιήσουμε strlen, ας περιλαμβάνουν string.h.
>> Ας επόμενη κηρύξει ως int main κενό και ας προχωρήσουμε τώρα να παρακινήσει
ο χρήστης για ένα string.
Printf, ας τους προτρέψει για κάποια είσοδο.
Τώρα, ας κηρύξει μια σειρά -
θα τον λέμε s -
και αποθηκεύστε σε αυτό το αποτέλεσμα της κλήσης η λειτουργία της βιβλιοθήκης CS50 GetString.
>> Ας προχωρήσουμε τώρα για να μετακινηθείτε πάνω στο καθένα από τους χαρακτήρες στο s, αξιοποιώντας
τυχόν πεζά γράμματα που βλέπουμε.
Για int, παίρνω 0.
Ας επίσης να δηλώσει n είναι ίση το μήκος της συμβολοσειράς s έτσι ώστε να μπορούμε
επαναλάβει από i μέχρι n, η μήκος του s, και για καθένα
επανάληψης αύξηση i.
>> Και στη συνέχεια στο εσωτερικό αυτού του βρόχου, ας πρώτος έλεγχος είναι η σημερινή επιστολή -
το i-στό γράμμα του s, να το πω έτσι -
ένα πεζό γράμμα.
Αν s βραχίονα I είναι μεγαλύτερο ή ίσο σε πεζά ένα, και είναι λιγότερο
ή ίση με πεζά z -
Τώρα, αν θέλετε να μετατρέψετε έναν πεζό γράμμα σε κεφαλαίο, υπενθυμίζουν, πρώτον, ότι
σε ένα πεζό ASCII a είναι 97 και ένα κεφαλαίο Α είναι 65.
Εν τω μεταξύ, ένα πεζό b είναι 98, και ένα κεφαλαίο Β είναι 66.
>> Αν συνεχίσουμε να εξετάσουμε αυτό το μοτίβο, θα δούμε ότι το πεζό
γράμματα είναι πάντα 32 υψηλότερες τιμές από τα κεφαλαία γράμματα.
Έτσι, αν θέλουμε να μετατρέψετε από πεζά σε κεφαλαία, θα έπρεπε
αρκεί, πράγματι, για να αφαιρέσετε 32 από την είσοδο του χρήστη.
Ή, γενικότερα, απλά αφαιρέστε ότι διαφορά μεταξύ ενός πεζά γράμματα α και α
κεφάλαιο Α.
>> Πώς να εκφράσω αυτό;
Λοιπόν, ας το κάνουμε στον κώδικα.
Printf, παραθέτω, χωρίς εισαγωγικά "% c" για εκτύπωση η τρέχουσα χαρακτήρα, που ακολουθείται από
εκτύπωση ό, τι είναι στο s βραχίονα i μείον το αποτέλεσμα του να κάνει ένα πεζό
μείον κεφαλαία Ένα ερωτηματικό.
Με άλλα λόγια, αυτή η παρενθετική έκφρασης, λίγο ένα μεγάλο μείον A, είναι
πρόκειται να επιστρέψει σε μας στο το τέλος της ημέρας 32.
Αλλά δεν πρέπει να ξεχνάμε ότι είναι 32.
Μπορώ να επιτρέψει στον υπολογιστή να καταλάβω ποια είναι η διαφορά μεταξύ πεζών
μια και το κεφάλαιο Α είναι.
>> Εν τω μεταξύ, τη στιγμή που ξέρω τη διαφορά, Μπορώ να το αφαιρέσουμε από s
βραχίονα i, η οποία θα πάρει ό, τι είναι προφανώς ένα πεζό γράμμα σε ένα
χαμηλότερη τιμή, δηλαδή μια τιμή που χαρτογραφεί επάνω σε ένα κεφαλαίο ισοδύναμο.
Ας σώσει τώρα, την κατάρτιση, και τρέξτε το πρόγραμμα.
Κάντε κεφαλαιοποιήσει dot κάθετος κεφαλαιοποιούνται.
Και η συμβολή μου θα είναι γεια.
Και εκεί έχουμε, γεια σου.
>> Τώρα μου προτροπή, κατά γενική ομολογία, λίγο άσχημο, επειδή έχουμε
παραλείπεται ένα κομμάτι της εκτύπωσης.
Και ας πάμε πίσω και να προσθέσω ότι.
Στο κάτω μέρος αυτού του προγράμματος, Είμαι πολύ απλή, και κυρίως για
αισθητικούς σκοπούς, πρόκειται να προσθέσει printf, απόσπασμα, unquote backslash n.
Ας αποθηκεύσετε ξανά αυτό το αρχείο, μεταγλωττίσετε και να επαναπροσδιοριστούν.
>> Κάντε κεφαλαιοποιήσει, dot κάθετος επωφεληθούμε.
Και πάλι, για την είσοδο θα παρέχουν "γεια" σε όλα τα πεζά και τώρα να πατήσετε το Enter,
και "γεια", πολύ πιο καθαρά τυπωμένο.