כתבו תכנית הקוראת מהמשתמש מספרים שלמים עד eof. על התכנית להדפיס כמה מספרים חיוביים, כמה אפסים, וכמה מספרים שליליים היו בקלט.
כתבו תכנית אשר קוראת מהמשתמש מספר שלם שוב, ושוב, עד שהמשתמש מזין קלט תקין. התכנית תציג את המספר שהיא קראה, ואת מספר הניסיונות שנדרשו לה לשם כך.
למשל: אם הקלט יהיה rst13 אזי יוצג המספר 13, ושנדרשו ארבעה ניסיונות עד שהמספר נקרא בהצלחה (בכל ניסיון, פרט לאחרון, חל כישלון, ובעקבותיו התכנית קלטה תו בודד שמנע ממנה את השלמת הפעולה של קריאת מספר שלם)
כמו מסייה ז'ורדן במחזה 'גם הוא באצילים' של מולייר, שכל חייו דיבר פרוזה, רק לא היה מודע לכך, גם אנו כל חיינו (התכנותיים) השתמשנו בקבצים, רק לא ידענו זאת. למעשה, עת תכניותינו קוראות נתונים מ: cin או פולטות נתונים ל: cout או ל: cerr הן, מבחינתן, משתמשות בקבצים. קבצים אלה 'אנו מקבלים בחינם' במובן זה שמערכת ההפעלה פותחת אותם עבורנו, ומגדירה שמחדלית הם יקושרו לַמקלדת ולמסך. כפי שראינו בסעיפים הקודמים, ביכולתנו גם להורות למערכת ההפעלה לשַנות ממנהגה זה, ולהעביר את הנתונים הנקראים\נכתבים מ: cin/cout מ\לקבצים. מדוע אני כל-כך מדגיש זאת? שכן לא אחת אני נשאל ע"י תלמידים: האם עת משתמשים בקבצים חיצוניים ניתן לעשות ...? ותשובתי במרבית המקרים היא: האם עת השתמשת ב: cin/cout יכולת לעשות ...? אם כן, אזי הדבר אפשרי גם עת אתה משתמש בקובץ חיצוני שאתה פתחת מפורשות, ואם לא אז לא. אומר זאת אחרת: מרגע שפתחת את הקובץ, אתה יכו לעשות עליו בדיוק את אותן הפעולות שיכולת בעבר לעשות על cin/cout.
בשפת C/C++ אנו מבחינים בין קובצי טקסט, אותם ניתן לטעון לעורך, להציג על המסך, להדפיס, שכן הם כוללים תווים, לבין קבצים בינאריים, עליהם לא ניתן לבצע את הפעולות שציינתי. קבצים בינאריים משמשים אותנו לשם העברת נתונים בין תכנית לתכנית (בפרט בהרצה אחת התכנית עשויה לייצר קובץ בינארי, ובהרצה השנייה לקרוא את הכתוב בו). אופן הטיפול בשני סוגי הקבצים דומה למדי, אולם בפרק זה אדון רק בקובצי טקסט.
כתבו תכנית אשר קוראת מהמשתמש שם של קובץ (קובץ שהמשתמש הכין מראש, וכולל מספרים שלמים). התכנית פותחת את הקובץ, קוראת אותו עד תומו, ומציגה כמה מספרים חיוביים, כמה אפסים, וכמה מספרים שליליים היו בקובץ.
לדוגמה: אם המשתמש הכין קובץ בשם my_nums.txt (באותה תיקיה בה נמצאה קובץ התכנית הניתנת שלנו, ה: executable), והזין לקובץ את שלוש שורות הנתונים הבאות:
5 9
0
2- 3- 1-
אזי התכנית תודיע שהיא קראה שני מספרים חיוביים, אפס בודד, ושלושה מספרים שליליים.
עד כה, פלט התכנית שלנו נשלח תמיד ל: cout. בסעיף זה אסביר כיצד ניתן לשלוח את הפלט לקובץ (וכך לשמרו לאורך זמן בקובץ).
חזרו לתכנית מהתרגול העצמי הבסיסי הקודם. עתה קראו מהמשתמש בנוסף לשם של קובץ קלט, שם של קובץ פלט.
התכנית שלכם תכתוב את הפלט שלה לא על cout, אלא על קובץ הפלט שהמשתמש הזין.
אחרי הרצת התכנית, הציגו קובץ זה על גבי המסך כדי לוודא שהוא מכיל את הפלט הדרוש.
באמצעות מכוון הקובץ אנו יכולים לזוז על הקובץ, קצת כמו על מערך: להגיע למקום רצוי בקובץ.
כתבו תכנית אשר קוראת מהמשתמש שם של קובץ, ממנו עליה לקרוא נתונים.
עתה התכנית תקרא (מהקלט הסטנדרטי) מחרוזת אותה עליה לחפש בקובץ. התכנית תציג את המקומות בקובץ בהם נמצא המחרוזת.
לדוגמה: אם הקובץ הוא:
abcxxxaxxx xxx
ויש לחפש את המחרוזת xxx אזי היא נמצאת בקובץ במקומות: 3, 7, 11
עד כאן פתחנו קובץ לקריאה או לכתיבה, אך לא לשם ביצוע שתי הפעולות גם יחד. לעתים עלינו לפתוח קובץ על-מנת לקרוא ממנו נתונים, ובמידת הצורך גם לעדכנו; במצבים כאלה נזדקק לקובץ שנפתח לקריאה וכתיבה כאחת.