DAVID מלאן: בואו עכשיו לחדד תכנית זו עוד קצת. האם לא יהיה זה נחמד אם יכל toupper לנצל מכתב אם אותיות קטנות, ו אם לא קטנה, לעבור זה דרך ללא שינוי? במילים אחרות, אני יכול להחליף שלי בלוק אם-אחר עם שיחה אחת לtoupper? 

ובכן, כדי לענות על שאלה זו, הייתי הכי טוב להתייעץ תיעוד toupper. לשם כך, הרשה לי לפתוח את מסוף גדול יותר מחוץ לחלון של gedit, ו לאחר מכן הקלד toupper אדם, ובכך מסמן כי אני רוצה לפתוח מה שנקרא אדם לדף toupper הפונקציה. על להכות הזן, אני רואה מסך כזה. ועכשיו שם לב שהם נראים לי בשילוב התיעוד לtoupper עליון עם שלtolower. אבל לא משנה. 

תוכל להבחין בתקציר כי אני נזכר כי, אכן, כדי להשתמש בזה פונקציה, אני חייבת לכלול את ctype.h קובץ הכותרת. מתחת לזה, אתה רואה שtoupper הוא הוכרז כחוזר int ו קבלת int, וזה קצת תמוה, שכן עד כה, אני כבר מניפולציה תווים בלבד. אבל זה בסדר. מסתבר שזו רק אמנה, ואנחנו עדיין יכולים להשתמש בג כ למרות שזה char, זה הוכרז כint. 

עכשיו, בתיאור כאן, אני רואה ש toupper ממיר את אות c ל אותיות רישיות במידת האפשר. ותחת ערך החזרה, אני רואה ש הערך המוחזר הוא זה של מכתב מומר, או ג, אם ההמרה לא הייתה אפשרית. ויש את תובנה אני מחפש. אם c הוא לא, למעשה, באותיות קטנות מכתב, נראה toupper שתהיה פשוט לעבור את זה ביחד ללא שינוי. 

אז בואו עכשיו לחזור לקוד שלי. ובואו עכשיו להסיר את מכלול בלוק זה מותנה ולהחליף אותו, בפשטות, עם% printf פסיק ג toupper של סוגר של i לסגור סוגריים הקרוב paren פסיק, ובכך מסמן כי הייתי רוצה להחליף% ג עם היוון מכתב ה-i בים אם ה-i מכתב בים הוא אותיות קטנות. או אפילו אם זה לא, זה יהיה עבר ללא שינוי. 

בואו עכשיו לקמפל תכנית זו עם להפוך capitalize2, ולהפעיל אותו עם capitalize2, שוב, הקלדת שלום. ואכן, אנחנו מקבלים בחזרה אותיות רישיות. בואו שוב הקלד דוד. וזה, גם הוא באותיות גדולות.