עד כה הכרנו משתנים פרימיטיביים מספריים (כדוגמת int, float), ומשתנים פרימיטיביים בולאניים. בפרק זה נכיר סוג נוסף של משתנים פרימיטיביים: משתנים תוויים (character variables).
בתכניות שאנו כותבים, לעיתים עלינו להחזיק תווים (כדוגמת אותיות או סימנים אחרים, למשל: !) ומחרוזות (כגון שם של תלמיד) במשתנים של התכנית. משתנים מטיפוס char, ומערכים של משתנים מטיפוס char הם שיאפשרו לנו להשיג מטרה זאת.
כתבו תכנית הקוראת מהמשתמש שני תווים, ומדפיסה את כל התווים ביניהם. לדוגמה: אם המשתמש יקיש A ואח"כ z אזי יודפסו כל התווים שבין ה- A (הגדולה) ל: z (הקטן).
כתבו תכנית הקוראת תווים ומתעלמת מהם כל עוד לא מוזנת לה אות לטינית קטנה (בתחום a..z). עתה התכנית ממשיכה לקרוא תווים כל עוד מוזנות לה אותיות קטנות, והא שומרת את האות הלטינית הקטנה הגדולה ביותר שהוזנה לה. עת מוזן לה תו שאינו אות לטינית קטנה התכנית עוצרת את הקריאה ומציגה את האות הלטינית הקטנה הגדולה ביותר שהיא קראה.
למשל, עבור הקלט: dcyef3-+! תוצג האות y. התכנית תחלוף על-פני סימן הקריאה' ה: + וה: -. תקרא את dcyef ותמצא את y כאות הקטנה הגדולה ביותר; ותעצור עת היא תקרא את 3.
משתנה תווי הוא יצור נחמד אך קצת חלש. במקרים רבים בהם יש לנו צורך לטפל בתווים אנו זקוקים למשתנה שיוכל להחזיק מחרוזת שלמה (כגון "yosi"), ולא רק תו בודד. מערך חד-ממדי של תווים הוא הכלי שיאפשר לנו להחזיק מחרוזת שלמה, ומייד נראה כיצד. (לעיתים נשתמש במילה האנגלית 'סטרינג' במקום עמיתתה העברית 'מחרוזת'.)
כתבו תכנית הקוראת מהמשתמש סדרת מחרוזות עד קריאת המחרוזת END. התכנית תדפיס את המחרוזת הארוכה ביותר שהיא קראה, ואת זו הגדולה ביותר מבחינת יחס הסדר הלקסיקוגרפי.
לדוגמה, אם הקלט יהיה:
abc cc bbbb aaa bab END
אזי המחרוזת הארוכה ביותר הינה bbbb והגדולה ביותר הינה cc
בסעיף זה אציג חלק ראשון מתוך תכנית גדולה, אשר מחזיקה מערך של מחרוזות.
כתבו תכנית המחזיקה מערך שמסוגל לשמור לכל היותר עשר מחרוזות, כל אחת באורך של לכל היותר חמישים תווים.
התכנית תקרא מחרוזות למערך עד מילויו, או עד קריאת המחרוזת END.
עתה התכנית תדפיס את המחרוזות שהיא קראה.
בשלב שני, הדפיסו את המחרוזות ממוינות מקטנה לגדולה. עשו זאת באופן הבא: החזיקו מערך עזר בולאני, בן עשרה תאים. אתחלו את תאיו לערך false כדי להגיד עבור כל מחרוזת ומחרוזת שהיא טרם הודפסה. כל פעם מצאו את המחרוזת הקטנה ביותר במערך שטרם הודפסה, הדפיסו אותה, וסמנו שהיא כבר הודפסה. חיזרו על כך כמספר המחרוזות שהוזנו למערך.
הפונ' strcmp עומדרת לרשותנו כפונ' ספריה, ואיננו צריכים לממש אותה. אולם לשם התרגול אנו יכולים לשאול את עצמנו כיצד נראה מימוש הפונ'? כלומר: מה הקוד שכתב מי שהכין את הפונ' עבורנו?
כתבו תכנית אשר מקבלת דרך וקטור הארגומנטים מספר כלשהו של מחרוזות, ומציגה את המחרוזת הקטנה ביותר שהועברה לה.
לדוגמה: אם הרצת התכנית תהיה:
./my_prog yosi dana ab abc x
אזי התכנית קיבלה דרך וקטור הארגומנטים חמש מחרוזות, הקטנה מביניהן היא ab, ולכן אותה עליה להציג בפלט.