David J. MALAN: Ipagpalagay na gusto ko ipatupad ang isang programa na prompt ang gumagamit para sa isang string at pagkatapos ay naaayos upang sulatin sa malaking titik ang kanilang mga input, nagko-convert ang anumang mga maliliit na titik na-type sila sa uppercase. Well, sabihin sige at ipatupad ang programang iyon. Kasama ni unang sinundan cs50.h Hayaan sa pamamagitan ng isama stdio.h. At nang sa gayon ay maaari naming gamitin strlen, Kasama ni string.h ipaalam. Ng susunod na idedeklara pangunahing bilang int pangunahing walang bisa Hayaan at sabihin ngayon magpatuloy upang i-prompt ang gumagamit para sa isang string. Printf, i-prompt ng mga ito hayaan para sa ilang mga input. Ngayon ipinapahayag ng isang string ipaalam - ipapakita namin tumawag ito ay s - at mag-store sa loob nito ang resulta ng pagtawag ang pag-andar GetString cs50 library. Ni ngayong magpatuloy upang umulit sa ibabaw ng bawat Hayaan ng ang mga character sa s, capitalize anumang mga maliliit na mga titik na nakikita namin. Para sa int, kumuha ng i 0. Ipinahahayag din ni n bilang sa pagiging patas sa Hayaan ang haba ng string ng mga gayon na aming makakaya umulit mula i up hanggang n, ang haba ng s, at sa bawat iteration paglakas i. At pagkatapos ay sa loob ng loop na ito, sabihin unang check ang kasalukuyang liham - ang mga i-ika titik ng s, kaya upang makipag-usap - isang maliit na mga titik. Kung bracket s i ay mas malaki kaysa sa o katumbas ng sa Maliit na titik a, at ito ay mas mababa sa o katumbas ng lowercase z - Ngayon kung gusto naming i-convert ang isang maliit na titik sulat sa uppercase, isipin ang unang na sa ASCII isang lowercase isang ay 97 at isang uppercase A ay 65. Samantala, ang isang maliit na mga b ay 98, at isang uppercase B ay 66. Kung patuloy namin upang tumingin sa pattern na, ipapakita namin makita na ang maliit na mga mga titik ay palaging 32 mga halaga na mas mataas kaysa sa malalaking titik. Kaya kung gusto naming mag-convert mula lowercase sa uppercase, dapat ito magkasiya, talaga, upang ibawas 32 mula sa input ng user. O kaya mas pangkalahatang paraan, ibawas lamang na pagkakaiba sa pagitan ng isang lowercase isang at isang capital A. Paano upang ipahayag na? Well, gawin ni ito sa code ipaalam. Printf, quote, magpanipi "% c" upang mag-print ang kasalukuyang karakter, na sinusundan ng pagpi-print ang kahit anong sa bracket s i minus ang resulta ng paggawa ng maliit na mga isang minus uppercase Ang isang tuldok-kuwit. Sa ibang salita, ito parenthetical expression, kaunti ng minus malaking A, ay pagpunta upang bumalik sa amin sa ang pagtatapos ng araw 32. Ngunit hindi ko kailangang tandaan na ito ay 32. Maaari ko bang payagan ang computer upang malaman kung ano ang pagkakaiba sa pagitan ng lowercase isang at kabisera A ay. Samantala, sa sandaling alam ko na pagkakaiba, Maaari ko bang ibawas ito mula s bracket i, na kung saan ay magdadala sa kung ano ang siguro isang lowercase na titik sa isang mas mababang halaga, lalo isang halaga na maps papunta sa isang uppercase katumbas. Hayaan ang i-save ngayon, ang sumulat ng libro, at patakbuhin ang program na ito. Gumawa ng sulatin sa malaking titik tuldok slash sa malaking titik. At ang aking input ay magiging kumusta. At doon mayroon kami, kumusta. Ngayon ang aking prompt, tinatanggap na, ay medyo mainit ang ulo, dahil hindi namin tinanggal isa bit ng pag-print. At ni bumalik at magdagdag ng mga na ipaalam. Sa pinakailalim ng programang ito, Ako'y sobrang simple, at higit sa lahat para sa Aesthetic layunin, pagpunta sa magdagdag ng printf, quote, magpanipi backslash n. Ni resave ang file na ito Hayaan, mag-recompile, muling palabas ng pelikula. Gumawa ng sulatin sa malaking titik, tuldok slash sulatin sa malaking titik. Muli, para sa input na makikita ko bang bigyan ang "kumusta" sa lahat ng mas mababang kaso at ngayon pindutin ang Enter, at "kumusta," mas nang malinis na-print.