1 00:00:00,000 --> 00:00:00,720 2 00:00:00,720 --> 00:00:03,190 >> David J. Malan dink dat Ek wil graag 'n program wat vra om te implementeer 3 00:00:03,190 --> 00:00:06,650 die gebruiker vir 'n string en dan voortgaan hul insette te kapitaliseer, 4 00:00:06,650 --> 00:00:09,790 omskakeling enige klein letters dat hulle tik hoofletters. 5 00:00:09,790 --> 00:00:11,770 Wel, laat ons gaan voort en implementeer die program. 6 00:00:11,770 --> 00:00:18,760 >> Kom ons kyk eers sluit cs50.h gevolg deur sluit stdio.h. 7 00:00:18,760 --> 00:00:23,990 En sodat ons kan StrLen gebruik, laat se sluit string.h. 8 00:00:23,990 --> 00:00:29,860 >> Kom ons volgende verklaar vernaamste as int belangrikste leemte en laat ons nou voortgaan om vinnig 9 00:00:29,860 --> 00:00:31,600 die gebruiker vir 'n string. 10 00:00:31,600 --> 00:00:34,840 Printf, laat ons gevra om hulle vir 'n paar insette. 11 00:00:34,840 --> 00:00:36,460 Laat se verklaar 'n string nou - 12 00:00:36,460 --> 00:00:37,630 ons sal noem dit is - 13 00:00:37,630 --> 00:00:44,010 en bêre in dit die gevolg van die roeping die cs50 biblioteek funksie GetString. 14 00:00:44,010 --> 00:00:48,850 >> Kom ons nou voortgaan om Itereer oor elke van die karakters in s, kapitaliseer 15 00:00:48,850 --> 00:00:50,650 enige klein letters wat ons sien. 16 00:00:50,650 --> 00:00:53,630 Vir int, ek kry 0. 17 00:00:53,630 --> 00:00:58,780 Kom ons verklaar ook n as gelyk te die string lengte van s, sodat ons kan 18 00:00:58,780 --> 00:01:03,590 Itereer van i tot n, die lengte van s, en op elke 19 00:01:03,590 --> 00:01:05,760 iterasie inkrement i. 20 00:01:05,760 --> 00:01:09,970 >> En dan binnekant van die loop, laat eerste tjek is die huidige brief - 21 00:01:09,970 --> 00:01:12,270 die i-de letter van s, om so te praat - 22 00:01:12,270 --> 00:01:14,170 'n klein letter. 23 00:01:14,170 --> 00:01:23,090 As s bracket ek is groter as of gelyk 'n te klein letters, en dit is minder 24 00:01:23,090 --> 00:01:26,900 as of gelyk aan klein Z - 25 00:01:26,900 --> 00:01:30,860 Nou as ons wil 'n klein om te skakel brief aan hoofletters, onthou dat eerste 26 00:01:30,860 --> 00:01:35,810 in ASCII 'n klein 'n 97 en 'n hoofletters A is 65. 27 00:01:35,810 --> 00:01:41,020 Intussen het 'n klein b is 98, en 'n hoof-B is 66. 28 00:01:41,020 --> 00:01:44,180 >> As ons voortgaan om te kyk na die patroon, ons sal sien dat die klein 29 00:01:44,180 --> 00:01:49,240 briewe is altyd 32 waardes hoër as die hoofletters. 30 00:01:49,240 --> 00:01:53,490 So as ons wil om te skakel van klein na 'n hoofletter, dit moet 31 00:01:53,490 --> 00:01:57,210 voldoende is, kan regtig nie, af te trek 32 van die gebruiker se insette. 32 00:01:57,210 --> 00:02:01,330 Of meer in die algemeen, net trek wat verskil tussen 'n klein 'n en 'n 33 00:02:01,330 --> 00:02:02,310 kapitaal A. 34 00:02:02,310 --> 00:02:03,410 >> Hoe om dit te druk? 35 00:02:03,410 --> 00:02:04,640 Wel, kom ons doen dit in die kode. 36 00:02:04,640 --> 00:02:09,960 Printf, quote, unquote "% c" om te druk die huidige karakter, gevolg deur 37 00:02:09,960 --> 00:02:18,500 druk net die in s bracket i minus die gevolg van 'n klein doen 38 00:02:18,500 --> 00:02:22,660 minus hoofletters 'n Kommapunt. 39 00:02:22,660 --> 00:02:27,010 Met ander woorde, die hakies uitdrukking, min om 'n minus groot A, is 40 00:02:27,010 --> 00:02:29,360 gaan terug na ons by die einde van die dag 32. 41 00:02:29,360 --> 00:02:31,230 Maar ek het nie om te onthou dat dit 32. 42 00:02:31,230 --> 00:02:34,150 Ek kan nie toelaat dat die rekenaar om uit te vind wat die verskil tussen klein 43 00:02:34,150 --> 00:02:35,990 A en kapitaal A is. 44 00:02:35,990 --> 00:02:39,610 >> Intussen, as ek weet dat verskil, Ek kan dit aftrek van s 45 00:02:39,610 --> 00:02:43,710 bracket ek, wat sal neem wat is vermoedelik 'n klein brief aan 'n 46 00:02:43,710 --> 00:02:48,100 laer waarde, naamlik 'n waarde wat kaarte op 'n hoofletters ekwivalent. 47 00:02:48,100 --> 00:02:51,240 Kom ons nou ook red, saamstel, en die uitvoering van hierdie program. 48 00:02:51,240 --> 00:02:57,760 Maak kapitaliseer dot streep gekapitaliseer. 49 00:02:57,760 --> 00:03:01,290 En my insette sal wees hallo. 50 00:03:01,290 --> 00:03:02,920 En daar het ons, hallo. 51 00:03:02,920 --> 00:03:05,570 >> Nou is my vinnige, weliswaar, is 'n bietjie lelik, want ons het 52 00:03:05,570 --> 00:03:07,810 weggelaat 'n bietjie van die druk. 53 00:03:07,810 --> 00:03:09,370 En laat ons teruggaan en byvoeg dat. 54 00:03:09,370 --> 00:03:12,890 Op die heel onderkant van hierdie program, Ek is baie eenvoudig, en grootliks vir 55 00:03:12,890 --> 00:03:18,440 estetiese doel, gaan printf te voeg, quote, unquote backslash n. 56 00:03:18,440 --> 00:03:22,330 Kom ons weer stoor hierdie lêer, heropstel, tik. 57 00:03:22,330 --> 00:03:28,090 >> Maak kapitaliseer, dot streep kapitaliseer. 58 00:03:28,090 --> 00:03:32,540 Weereens, vir die insette wat ek sal voorsien "hallo" in al laer geval en nou druk Enter, 59 00:03:32,540 --> 00:03:34,550 en "hallo", baie meer skoon gedruk. 60 00:03:34,550 --> 00:03:36,432