>> DAVID MALAN: Ας υποθέσουμε ότι θα ήθελα να γράψω ένα πρόγραμμα που ζητά από το χρήστη
για μια σειρά και στη συνέχεια να κεφαλαιοποιεί η συμβολοσειρά.
Λοιπόν, ας ξεκινήσουμε με κάποια οικεία κώδικα που κηρύσσει μια σειρά που ονομάζεται s και
αναθέσουν την επιστροφή αξία της GetString.
Και ας προχωρήσουμε τώρα για να μετακινηθείτε πάνω οι χαρακτήρες αυτής της σειράς.
Λοιπόν, πώς να το κάνουμε αυτό;
Αποδεικνύεται ότι ένα string είναι απλά μια ακολουθία χαρακτήρων, αλλά περισσότερο
σωστά, μια συμβολοσειρά είναι ένας πίνακας χαρακτήρες, που σημαίνει ότι μπορούμε να χρησιμοποιήσουμε
αγκύλη σημειογραφία δείκτη σε μια σειρά και να πάρει σε ατομικό
χαρακτήρων.
>> Με άλλα λόγια, μπορούμε να ακολουθήστε τα παρακάτω βήματα.
Για int, i παίρνει 0, και n παίρνει, δηλαδή, το μήκος του s, χρησιμοποιώντας
λειτουργία μας [; ανακατεύετε?]
[? γραμμή,?]
i είναι μικρότερο από N i + +.
Με άλλα λόγια, με αυτό το βρόχο, εμείς θα επαναλάβει πάνω από όλα τα γράμματα n
στη συμβολοσειρά s.
Και μέσα σε αυτό το βρόχο, Πάω να ελέγξτε, αν το i-οστό χαρακτήρα s
μεγαλύτερη ή ίση με πεζά α, και το i-th χαρακτήρας είναι μικρότερη ή
ίση με πεζά c, τότε θέλω να προχωρήσει να κεφαλαιοποιήσει αυτό το γράμμα.
Με άλλα λόγια, θέλω να εκτυπώσετε% c ως σύμβολο κράτησης θέσης και υποκατάστατο για
βραχίονα του εν λόγω κράτησης θέσης s i.
>> Αλλά τότε θα πρέπει να μετατρέψετε s βραχίονα i σε κεφαλαία.
Για να το κάνετε αυτό, απλά μπορώ να αφαιρέσετε ό, τι είναι η διαφορά μεταξύ
πεζά και ένα κεφάλαιο Α. Λοιπόν, εγώ πραγματικά θυμάμαι ότι το κεφάλαιο Α είναι
65 σε ASCII, και πεζά ένα είναι 97.
Έτσι, η διαφορά είναι τεχνικά 32.
Γι 'αυτό και θα μπορούσε μόνο σκληρή κωδικό 32 εδώ.
Αλλά εγώ ίσως δεν είναι απαραίτητα θυμηθείτε αυτούς τους αριθμούς.
>> Και επιπλέον, τι και αν διαφέρουν ανάλογα με τον υπολογιστή;
Το πιο πιθανό είναι ότι δεν είναι.
Αλλά το ζήτημα παραμένει ότι μπορώ ακόμα γενικεύουμε ότι αριθμητική έκφραση
όπως ακριβώς ό, τι η διαφορά είναι μεταξύ πεζών και ένα κεφάλαιο Α
είναι αυτό που θέλω να αφαιρούμε από αυτό το συγκεκριμένο πεζό γράμμα.
>> Τώρα, εάν αυτό το συγκεκριμένο γράμμα Δεν είναι πεζά, εγώ απλά
θέλετε να το εκτυπώσετε.
printf, γ% ως αντικαταστάτης μου, s βραχίονα i.
Στο κάτω μέρος αυτού του προγράμματος, ας απλά να εκτυπώσετε αλλαγή γραμμής, έτσι ώστε μου
εμφανίζεται το μήνυμα για μια νέα γραμμή της δικής του.
>> Ας τώρα να μεταγλωττίσετε το πρόγραμμα αυτό με make capitalize0.
Ας τρέξει με capitalize0.
Και ας πληκτρολογήσετε μια λέξη όπως γεια σε όλα τα πεζά.
Παίρνω πίσω ΓΕΙΑ με κεφαλαία γράμματα όπως αναμενόταν.
Αλλά ας προσπαθήσουμε μια ακόμη δοκιμασία, αυτή τη φορά με το δικό μου όνομα, D-Α-V-Ι-Α, αλλά με
το πρώτο Α κεφαλαίο, μόνο στην περίπτωση που κάτι επάνω μπέρδεμα
αυτό το πρώτο char.
Enter, και D-Α-V-Ι-Α κεφαλαίο εκτυπώνεται επίσης.