David J. Malan dink dat Ek wil graag 'n program wat vra om te implementeer die gebruiker vir 'n string en dan voortgaan hul insette te kapitaliseer, omskakeling enige klein letters dat hulle tik hoofletters. Wel, laat ons gaan voort en implementeer die program.
Kom ons kyk eers sluit cs50.h gevolg deur sluit stdio.h. En sodat ons kan StrLen gebruik, laat se sluit string.h.
Kom ons volgende verklaar vernaamste as int belangrikste leemte en laat ons nou voortgaan om vinnig die gebruiker vir 'n string. Printf, laat ons gevra om hulle vir 'n paar insette. Laat se verklaar 'n string nou - ons sal noem dit is - en bêre in dit die gevolg van die roeping die cs50 biblioteek funksie GetString.
Kom ons nou voortgaan om Itereer oor elke van die karakters in s, kapitaliseer enige klein letters wat ons sien. Vir int, ek kry 0. Kom ons verklaar ook n as gelyk te die string lengte van s, sodat ons kan Itereer van i tot n, die lengte van s, en op elke iterasie inkrement i.
En dan binnekant van die loop, laat eerste tjek is die huidige brief - die i-de letter van s, om so te praat - 'n klein letter. As s bracket ek is groter as of gelyk 'n te klein letters, en dit is minder as of gelyk aan klein Z - Nou as ons wil 'n klein om te skakel brief aan hoofletters, onthou dat eerste in ASCII 'n klein 'n 97 en 'n hoofletters A is 65. Intussen het 'n klein b is 98, en 'n hoof-B is 66.
As ons voortgaan om te kyk na die patroon, ons sal sien dat die klein briewe is altyd 32 waardes hoër as die hoofletters. So as ons wil om te skakel van klein na 'n hoofletter, dit moet voldoende is, kan regtig nie, af te trek 32 van die gebruiker se insette. Of meer in die algemeen, net trek wat verskil tussen 'n klein 'n en 'n kapitaal A.
Hoe om dit te druk? Wel, kom ons doen dit in die kode. Printf, quote, unquote "% c" om te druk die huidige karakter, gevolg deur druk net die in s bracket i minus die gevolg van 'n klein doen minus hoofletters 'n Kommapunt. Met ander woorde, die hakies uitdrukking, min om 'n minus groot A, is gaan terug na ons by die einde van die dag 32. Maar ek het nie om te onthou dat dit 32. Ek kan nie toelaat dat die rekenaar om uit te vind wat die verskil tussen klein A en kapitaal A is.
Intussen, as ek weet dat verskil, Ek kan dit aftrek van s bracket ek, wat sal neem wat is vermoedelik 'n klein brief aan 'n laer waarde, naamlik 'n waarde wat kaarte op 'n hoofletters ekwivalent. Kom ons nou ook red, saamstel, en die uitvoering van hierdie program. Maak kapitaliseer dot streep gekapitaliseer. En my insette sal wees hallo. En daar het ons, hallo.
Nou is my vinnige, weliswaar, is 'n bietjie lelik, want ons het weggelaat 'n bietjie van die druk. En laat ons teruggaan en byvoeg dat. Op die heel onderkant van hierdie program, Ek is baie eenvoudig, en grootliks vir estetiese doel, gaan printf te voeg, quote, unquote backslash n. Kom ons weer stoor hierdie lêer, heropstel, tik.
Maak kapitaliseer, dot streep kapitaliseer. Weereens, vir die insette wat ek sal voorsien "hallo" in al laer geval en nou druk Enter, en "hallo", baie meer skoon gedruk.