1
00:00:00,000 --> 00:00:00,720

2
00:00:00,720 --> 00:00:03,190
>> DAVID J. MALAN: Anta att jag skulle vilja
att genomföra ett program som uppmanar

3
00:00:03,190 --> 00:00:06,650
användaren efter en sträng och sedan fortsätter
att kapitalisera sin ingång,

4
00:00:06,650 --> 00:00:09,790
konvertera alla gemener
att de skriver till versaler.

5
00:00:09,790 --> 00:00:11,770
Nåväl, låt oss gå vidare och
genomföra detta program.

6
00:00:11,770 --> 00:00:18,760
>> Låt oss först inkludera cs50.h följt
genom inkludera stdio.h.

7
00:00:18,760 --> 00:00:23,990
Och så att vi kan använda strlen,
låt oss inkludera string.h.

8
00:00:23,990 --> 00:00:29,860
>> Låt oss nästa förklara huvud som int main tomrum
och låt oss nu fortsätta att uppmana

9
00:00:29,860 --> 00:00:31,600
användaren för en sträng.

10
00:00:31,600 --> 00:00:34,840
Printf, låt oss få dem
för lite input.

11
00:00:34,840 --> 00:00:36,460
Nu ska vi deklarera en sträng -

12
00:00:36,460 --> 00:00:37,630
vi kallar det är -

13
00:00:37,630 --> 00:00:44,010
och lagra i det resultatet av att ringa
den CS50 biblioteksfunktion GetString.

14
00:00:44,010 --> 00:00:48,850
>> Låt oss nu gå vidare för att iterera över varje
av karaktärerna i s, kapitalisera

15
00:00:48,850 --> 00:00:50,650
några små bokstäver som vi ser.

16
00:00:50,650 --> 00:00:53,630
För int, jag får 0.

17
00:00:53,630 --> 00:00:58,780
Låt oss också deklarera n som är lika med
strängens längd s, så att vi kan

18
00:00:58,780 --> 00:01:03,590
iterera från i upp till n, den
längd s, och på varje

19
00:01:03,590 --> 00:01:05,760
iteration inkrement i..

20
00:01:05,760 --> 00:01:09,970
>> Och sedan insidan av denna slinga, låt oss
första kontrollen är den aktuella bokstaven -

21
00:01:09,970 --> 00:01:12,270
det i: te skrivelse av s, så att säga -

22
00:01:12,270 --> 00:01:14,170
en liten bokstav.

23
00:01:14,170 --> 00:01:23,090
Om s bygel i är större än eller lika
till gemener en, och det är mindre

24
00:01:23,090 --> 00:01:26,900
än eller lika med gemener z -

25
00:01:26,900 --> 00:01:30,860
Om vi ​​nu vill konvertera ett gement
brev till versaler, minns först att

26
00:01:30,860 --> 00:01:35,810
i ASCII ett gement a är 97
och ett versalt A är 65.

27
00:01:35,810 --> 00:01:41,020
Samtidigt är ett gement b 98,
och ett versalt B är 66.

28
00:01:41,020 --> 00:01:44,180
>> Om vi ​​fortsätter att titta på detta mönster,
Vi ser att den gemena

29
00:01:44,180 --> 00:01:49,240
bokstäverna är alltid 32 värden högre
än versaler.

30
00:01:49,240 --> 00:01:53,490
Så om vi vill konvertera från gemener
till versaler, bör det

31
00:01:53,490 --> 00:01:57,210
räcka, egentligen, att subtrahera
32 från användarens input.

32
00:01:57,210 --> 00:02:01,330
, Eller mer generellt, bara subtrahera det
Skillnaden mellan ett gement a och en

33
00:02:01,330 --> 00:02:02,310
kapital A.

34
00:02:02,310 --> 00:02:03,410
>> Så för att uttrycka det?

35
00:02:03,410 --> 00:02:04,640
Nåväl, låt oss göra det i kod.

36
00:02:04,640 --> 00:02:09,960
Printf, citat, unquote "% c" för att skriva ut
det aktuella tecknet, följt av

37
00:02:09,960 --> 00:02:18,500
utskrift vad är i s fäste i minus
resultatet av att göra gemener a

38
00:02:18,500 --> 00:02:22,660
minus versaler En semikolon.

39
00:02:22,660 --> 00:02:27,010
Med andra ord är denna parent
uttryck, lite ett minus stort A, är

40
00:02:27,010 --> 00:02:29,360
kommer att återvända till oss på
I slutet av dagen 32.

41
00:02:29,360 --> 00:02:31,230
Men jag behöver inte komma ihåg
att det är 32.

42
00:02:31,230 --> 00:02:34,150
Jag kan låta datorn räkna ut
vad skillnaden mellan gemener

43
00:02:34,150 --> 00:02:35,990
a och kapital A är.

44
00:02:35,990 --> 00:02:39,610
>> Under tiden, när jag vet att skillnaden,
Jag kan subtrahera det från s

45
00:02:39,610 --> 00:02:43,710
fäste i, som tar vad som finns
förmodligen en liten bokstav till en

46
00:02:43,710 --> 00:02:48,100
lägre värde, det vill säga ett värde som mappar
på en versal motsvarighet.

47
00:02:48,100 --> 00:02:51,240
Låt oss nu spara, kompilera,
och köra programmet.

48
00:02:51,240 --> 00:02:57,760
Gör kapitalisera prick snedstreck aktiverats.

49
00:02:57,760 --> 00:03:01,290
Och min ingång blir hej.

50
00:03:01,290 --> 00:03:02,920
Och där har vi, hej.

51
00:03:02,920 --> 00:03:05,570
>> Nu är min prompt visserligen är
lite fult, därför att vi har

52
00:03:05,570 --> 00:03:07,810
utelämnade en bit av utskrift.

53
00:03:07,810 --> 00:03:09,370
Och låt oss gå tillbaka och lägga till det.

54
00:03:09,370 --> 00:03:12,890
Längst ner i detta program,
Jag är mycket enkelt, och till stor del för

55
00:03:12,890 --> 00:03:18,440
estetiska ändamål, kommer att lägga till printf,
citat, unquote omvänt snedstreck n.

56
00:03:18,440 --> 00:03:22,330
Låt oss spara om den här filen,
kompilera, repris.

57
00:03:22,330 --> 00:03:28,090
>> Gör kapitalisera, punkt snedstreck kapitalisera.

58
00:03:28,090 --> 00:03:32,540
Återigen, för inmatning jag ska ge "hej"
i alla små bokstäver och nu slå Enter,

59
00:03:32,540 --> 00:03:34,550
och "Hej," mycket mer rent ut.

60
00:03:34,550 --> 00:03:36,432