10 קלט\פלט וטיפול בקבצים בשפת ++C

10.1 הקדמה

10.1.pdf

10.2 הפונ' ()cin.eof

הסבר כתוב אודות ()cin.eof

10.2.pdf

תרגול עצמי בסיסי בנושא הפונ' cin.eof()

כתבו תכנית הקוראת מהמשתמש מספרים שלמים עד eof. על התכנית להדפיס כמה מספרים חיוביים, כמה אפסים, וכמה מספרים שליליים היו בקלט.

10.3 הפונ': cin.fail(), cin.clear(), cin.bad(), cin.good()

הסבר כתוב אודות: cin.fail(), cin.clear(), cin.bad(), cin.good()

10.3.pdf

תרגול עצמי בסיסי בנושא cin.fail()

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

למשל: אם הקלט יהיה rst13 אזי יוצג המספר 13, ושנדרשו ארבעה ניסיונות עד שהמספר נקרא בהצלחה (בכל ניסיון, פרט לאחרון, חל כישלון, ובעקבותיו התכנית קלטה תו בודד שמנע ממנה את השלמת הפעולה של קריאת מספר שלם)

נקודה שולית: ביצוע קלט בתוך תנאי של לולאה

10.4 שימוש בקבצים חיצוניים (ראשית: לשם קריאת נתונים)

כמו מסייה ז'ורדן במחזה 'גם הוא באצילים' של מולייר, שכל חייו דיבר פרוזה, רק לא היה מודע לכך, גם אנו כל חיינו (התכנותיים) השתמשנו בקבצים, רק לא ידענו זאת. למעשה, עת תכניותינו קוראות נתונים מ: cin או פולטות נתונים ל: cout או ל: cerr הן, מבחינתן, משתמשות בקבצים. קבצים אלה 'אנו מקבלים בחינם' במובן זה שמערכת ההפעלה פותחת אותם עבורנו, ומגדירה שמחדלית הם יקושרו לַמקלדת ולמסך. כפי שראינו בסעיפים הקודמים, ביכולתנו גם להורות למערכת ההפעלה לשַנות ממנהגה זה, ולהעביר את הנתונים הנקראים\נכתבים מ: cin/cout מ\לקבצים. מדוע אני כל-כך מדגיש זאת? שכן לא אחת אני נשאל ע"י תלמידים: האם עת משתמשים בקבצים חיצוניים ניתן לעשות ...? ותשובתי במרבית המקרים היא: האם עת השתמשת ב: cin/cout יכולת לעשות ...? אם כן, אזי הדבר אפשרי גם עת אתה משתמש בקובץ חיצוני שאתה פתחת מפורשות, ואם לא אז לא. אומר זאת אחרת: מרגע שפתחת את הקובץ, אתה יכו לעשות עליו בדיוק את אותן הפעולות שיכולת בעבר לעשות על cin/cout.

בשפת C/C++ אנו מבחינים בין קובצי טקסט, אותם ניתן לטעון לעורך, להציג על המסך, להדפיס, שכן הם כוללים תווים, לבין קבצים בינאריים, עליהם לא ניתן לבצע את הפעולות שציינתי. קבצים בינאריים משמשים אותנו לשם העברת נתונים בין תכנית לתכנית (בפרט בהרצה אחת התכנית עשויה לייצר קובץ בינארי, ובהרצה השנייה לקרוא את הכתוב בו). אופן הטיפול בשני סוגי הקבצים דומה למדי, אולם בפרק זה אדון רק בקובצי טקסט.

קבצים חיצוניים: חלק א'


קבצים חיצוניים: חלק ב'


הסבר כתוב אודות קבצים חיצוניים (לשם קריאת נתונים)

10.4.pdf

תרגול עצמי בסיסי בנושא קבצים חיצוניים לשם קריאת נתונים

כתבו תכנית אשר קוראת מהמשתמש שם של קובץ (קובץ שהמשתמש הכין מראש, וכולל מספרים שלמים). התכנית פותחת את הקובץ, קוראת אותו עד תומו, ומציגה כמה מספרים חיוביים, כמה אפסים, וכמה מספרים שליליים היו בקובץ.

לדוגמה: אם המשתמש הכין קובץ בשם my_nums.txt (באותה תיקיה בה נמצאה קובץ התכנית הניתנת שלנו, ה: executable), והזין לקובץ את שלוש שורות הנתונים הבאות:

5 9

0

2- 3- 1-

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

קבצים חיצוניים -- לשם כתיבת הפלט על קובץ

עד כה, פלט התכנית שלנו נשלח תמיד ל: cout. בסעיף זה אסביר כיצד ניתן לשלוח את הפלט לקובץ (וכך לשמרו לאורך זמן בקובץ).

קבצים חיצוניים: חלק ג' - כתיבבת פלט על קובץ (1)


קבצים חיצוניים: חלק ג' - כתיבבת פלט על קובץ (2)


הסבר כתוב אודות כתיבת פלט על קובץ

10.4b.pdf

תרגול עצמי בסיסי בנושא: כתיבה על קובץ

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

התכנית שלכם תכתוב את הפלט שלה לא על cout, אלא על קובץ הפלט שהמשתמש הזין.

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

10.5 מכוון הקובץ: מצביעי get ו- put

באמצעות מכוון הקובץ אנו יכולים לזוז על הקובץ, קצת כמו על מערך: להגיע למקום רצוי בקובץ.

מכוון הקובץ - חלק א'


מכוון הקובץ - חלק ב'


הסבר כתוב אודות מכוון הקובץ

10.5.pdf

תרגול עצמי בסיסי בנושא מכוון הקובץ

כתבו תכנית אשר קוראת מהמשתמש שם של קובץ, ממנו עליה לקרוא נתונים.

עתה התכנית תקרא (מהקלט הסטנדרטי) מחרוזת אותה עליה לחפש בקובץ. התכנית תציג את המקומות בקובץ בהם נמצא המחרוזת.

לדוגמה: אם הקובץ הוא:

abcxxxaxxx xxx

ויש לחפש את המחרוזת xxx אזי היא נמצאת בקובץ במקומות: 3, 7, 11

10.6 קריאה וכתיבה מאותו קובץ

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

10.6.pdf

10.7 תרגילים

10.7.pdf