DAVID J. MALAN: Anta att jag skulle vilja att genomföra ett program som uppmanar användaren efter en sträng och sedan fortsätter att kapitalisera sin ingång, konvertera alla gemener att de skriver till versaler. Nåväl, låt oss gå vidare och genomföra detta program. 

Låt oss först inkludera cs50.h följt genom inkludera stdio.h. Och så att vi kan använda strlen, låt oss inkludera string.h. 

Låt oss nästa förklara huvud som int main tomrum och låt oss nu fortsätta att uppmana användaren för en sträng. Printf, låt oss få dem för lite input. Nu ska vi deklarera en sträng - vi kallar det är - och lagra i det resultatet av att ringa den CS50 biblioteksfunktion GetString. 

Låt oss nu gå vidare för att iterera över varje av karaktärerna i s, kapitalisera några små bokstäver som vi ser. För int, jag får 0. Låt oss också deklarera n som är lika med strängens längd s, så att vi kan iterera från i upp till n, den längd s, och på varje iteration inkrement i.. 

Och sedan insidan av denna slinga, låt oss första kontrollen är den aktuella bokstaven - det i: te skrivelse av s, så att säga - en liten bokstav. Om s bygel i är större än eller lika till gemener en, och det är mindre än eller lika med gemener z - Om vi ​​nu vill konvertera ett gement brev till versaler, minns först att i ASCII ett gement a är 97 och ett versalt A är 65. Samtidigt är ett gement b 98, och ett versalt B är 66. 

Om vi ​​fortsätter att titta på detta mönster, Vi ser att den gemena bokstäverna är alltid 32 värden högre än versaler. Så om vi vill konvertera från gemener till versaler, bör det räcka, egentligen, att subtrahera 32 från användarens input. , Eller mer generellt, bara subtrahera det Skillnaden mellan ett gement a och en kapital A. 

Så för att uttrycka det? Nåväl, låt oss göra det i kod. Printf, citat, unquote "% c" för att skriva ut det aktuella tecknet, följt av utskrift vad är i s fäste i minus resultatet av att göra gemener a minus versaler En semikolon. Med andra ord är denna parent uttryck, lite ett minus stort A, är kommer att återvända till oss på I slutet av dagen 32. Men jag behöver inte komma ihåg att det är 32. Jag kan låta datorn räkna ut vad skillnaden mellan gemener a och kapital A är. 

Under tiden, när jag vet att skillnaden, Jag kan subtrahera det från s fäste i, som tar vad som finns förmodligen en liten bokstav till en lägre värde, det vill säga ett värde som mappar på en versal motsvarighet. Låt oss nu spara, kompilera, och köra programmet. Gör kapitalisera prick snedstreck aktiverats. Och min ingång blir hej. Och där har vi, hej. 

Nu är min prompt visserligen är lite fult, därför att vi har utelämnade en bit av utskrift. Och låt oss gå tillbaka och lägga till det. Längst ner i detta program, Jag är mycket enkelt, och till stor del för estetiska ändamål, kommer att lägga till printf, citat, unquote omvänt snedstreck n. Låt oss spara om den här filen, kompilera, repris. 

Gör kapitalisera, punkt snedstreck kapitalisera. Återigen, för inmatning jag ska ge "hej" i alla små bokstäver och nu slå Enter, och "Hej," mycket mer rent ut.