Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 עבודה עם קבצי טקסט  סוגי קבצים  קובץ טקסט  קובץ בינארי  פתיחה וסגירה של קובץ  פונקציות לקריאה ולכתיבת תו  פונקציות לקריאה ולכתיבת שורה  פונקציות.

Similar presentations


Presentation on theme: "1 עבודה עם קבצי טקסט  סוגי קבצים  קובץ טקסט  קובץ בינארי  פתיחה וסגירה של קובץ  פונקציות לקריאה ולכתיבת תו  פונקציות לקריאה ולכתיבת שורה  פונקציות."— Presentation transcript:

1

2 1 עבודה עם קבצי טקסט  סוגי קבצים  קובץ טקסט  קובץ בינארי  פתיחה וסגירה של קובץ  פונקציות לקריאה ולכתיבת תו  פונקציות לקריאה ולכתיבת שורה  פונקציות לקריאה לכתיבה מובנית

3 2 שימוש בקבצים ששימוש בקבצים מאפשר לנו לשמור נתונים ע”ג התקני אחסון חיצוניים ובעיקר ע”ג הדיסק הקשיח. ששימוש בקבצים מאפשר לשמור כמות גדולה של נתונים, מעבר לקיבולת הזיכרון, ולשמור את הנתונים גם כאשר המחשב כבוי. עעל מנת שהנתונים יהיו נגישים עלינו לשמור אותם בסדר הגיוני. ככל נתון ישמר בשדה. לדוגמא שם פרטי. ככל השדות המתייחסים לאותו פריט ישמרו באותה רשומה. לדוגמא רשומת סטודנט. ררשומות המתייחסות לאותו נושא ישמרו באותו קובץ. לדוגמא הסטודנטים רפואה שנה א (נתוני כל סטודנט ישמרו ברשומה נפרדת קקבצים בעלי קשר ישמרו באותה תיקיה. לדוגמא כל קבצי התלמידים

4 3 המבנה FILE ההמבנה מוגדר בקובץ stdio.hומכיל מידע אודות קובץ. המבנה הוא : typedef struct { shortevel; unsignedflags; charfd; מספר הזיהוי של הקובץ במערכת ההפעלה unsigned charhold; shortbsize; unsigned char*buffer, *curp;החוצץ דרכו נעשית הפעולה ומצביע למיקום הנוכחי בקובץ unsignedistemp; sorttoken; }FILE;על מנת שנוכל לפנות לקובץ עלינו להגדיר משתנה מסוג זה

5 4 פתיחת קובץ fopen ללפני התחלת השימוש בקובץ, לכל מטרה שהיא, חייבים לפתוח את הקובץ. הפתיחה עושה את הקובץ לזמין. הפונקציה כלולה בספריה stdio.h. ההאבטיפוס של הפונקציה לפתיחת קובץ : FILE *fopen(const char *filename, const char *mode); ככלומר הפונקציה מחזירה מצביע לטיפוס FILE,שהוא מבנה אשר מוצהר עליו ב-stdio.h.בשדות השונים של הטיפוס נעשה שימוש ע”י פונקציות שונות המתייחסות לקבצים. קריאה לפונקציה יוצרת מופע של המבנה ומחזירה מצביע למבנה זה. תתבנית הפונקציה : FOPEN(file_path, mode);

6 5 פתיחת קובץ - fopen - המשך ההסבר התבנית : ההפונקציה מחזירה מצביע לנתון מסוג FILE.אם הפונקציה נכשלת בפתיחת הקובץ, מוחזר הערך NULL. ההארגומנט filepathהוא שם הקובץ שרוצים לפתוח, כולל המסלול. אפשר לכתוב מחרוזת כלואה בין גרשיים או מצביע למחרוזת המאוחסנת בזיכרון. שם הקובץ נקבע בהתאם לכללי מערכת ההפעלה ההארגומנט Modeמציין את סוג הגישה לקובץ (טקסט או בינארי) ואת האופן שבו רוצים לפתחו את הקובץ (קריאה, כתיבה או קריאה וגם כתיבה). עעל מנת לפנות לקובץ עלינו להגדיר משתנה מסוג FILE,לדוגמא FILE *fp;

7 6 דדוגמא לשימוש בפונקציה לפתיחת קובץ : fopen (“C:\MyBooks\Autoexec.bat”, “r”); ההכונן הוא Cהתיקייה היא MyBooksושם הקובץ הוא Autoexec.bat ההקובץ נפתח למטרת קריאה (r).אפשר לפתוח קובץ כקובץ קלט (Input)או כקובץ פלט (Output)או כקובץ קלט ופלט (Append). אאני מעדיף לבצע את אותה פעולה בדרך הבאה : char file_name [] = “C:\MyBooks\Autoexec.bat”; char mode[] = “r”; fopen(file_name, mode);

8 7 הערכים שהארגומנט mode יכול לקבל rr -לפתיחת קובץ טקסט לקריאה. אם הקובץ לא קיים מוחזר הערך null ww -לפתיחת קובץ טקסט לכתיבה. אם הקובץ לא קיים, הוא נוצר, אם הקובץ קיים הוא נדרס. aa -לפתיחת קובץ טקסט להוספה (Append).אם הקובץ לא קיים, הוא נוצר. אם הקובץ קיים יתווספו הנתונים בסוף הקובץ. rrb-לפתיחת קובץ בינארילקריאה. אם הקובץ לא קיים מוחזר הערך null wwb -לפתיחת קובץ בינארי לכתיבה. אם הקובץ לא קיים, הוא נוצר, אם הקובץ קיים הוא נדרס. aab -פתיחת קובץ בינארי להוספה. כמו “a”/ ++r -פתיחת קובץ טקסט לקריאה ולכתיבה, השאר כמו r. ++w -פתיחת קובץ טקסט לקריאה ולכתיבה, השאר כמו w.

9 8 הערכים שהארגומנט mode יכול לקבל - המשך ++a -פתיחת קובץ טקסט לקריאה ולהוספה, השאר כמו a. ++rb -פתיחת קובץ בינארי לקריאה ולכתיבה, השאר כמו rb ++wb -פתיחת קובץ בינארי לקריאה ולכתיבה, השאר כמו wb ++ab -פתיחת קובץ בינארי לקריאה ולהוספה, השאר כמו ab

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

11 10 בדיקת הצלחה או כישלון בפתיחת קובץ ההפונקציה () fopenמחזירה ערך המציין אם פתיחת הקובץ הצליחה או נכשלה. עלינו לבדוק את הערך המוחזר. אאם פתיחת הקובץ נכשלה מוחזר הערך NULL. אאם פתיחת הקובץ הצליחה מוחזר הערך 1. דדוגמא לבדיקת הצלחת פתיחת הקובץ : fp_input = fopen(input_file_name, “rt”); if (fp_input == NULL) { fprintf(stderr, “Error during opening the file”); exit(1); }

12 11 סגירת קובץ fclose ללאחר סיום השימוש בקובץ, חייבים לסגור את הקובץ. הסגירה עושה את הקובץ ללא זמין. הפונקציה כלולה בספריה stdio.h. ההאבטיפוס של הפונקציה לסגירת קובץ : FILE *fclose(const char *filename); ככלומר הפונקציה מחזירה מצביע לטיפוס FILE,שהוא מבנה אשר מוצהר עליו ב-stdio.h.תבנית הפונקציה לסגירת קובץ : FCLOSE (FILE *fp); דדוגמא לשימוש בפונקציה לסגירת קובץ : fclose (fp); ההפונקציה מחזירה EOFאם סגירת הקובץ נכשלה.

13 12 קובץ טקסט Text file קקובץ זה הנוצר ע”י שפת Cיכול להיקרא ע”י כל תוכנה המסוגלת לקרוא קובץ טקסט. ההקובץ הוא למעשה רצף של שורות המופרדות ע”י התווים r\ו-n\ (סוף שורה ושורה חדשה). האורך המרבי של שורה הוא 255 תווים ההשורה מסתיימת בתו אחד או יותר המאותתים על “סוף שורה” בקובץ על דיסק וזאת בהתאם למערכת ההפעלה. במערכות הפעלה Dosו-Windowsתו “סוף שורה” הוא שילוב של CR-LF,כלומר r\ + n\. בבכתיבת מחרוזת לקובץ טקסט, מוחלף התו ‘0\’ מסוף המחרוזת בתו “סוף שורה”. בקריאה מקובץ טקסט מוסף התו ‘0\’ בסוף המחרוזת. בבכתיבה לקובץ מוחלף התו שורה חדשה ‘n\’בתו “סוף שורה”. בבקריאה מקובץ מוחלף התו “סוף שורה” לתו ‘n\’.

14 13 פונקציה לכתיבת תו () Fputc ההפונקציה כותבת תו אחד לקובץ ש-fpמצביע עליו. לאחר הכתיבה יקודם סמן הקובץ למיקום הבא. הפונקציה כלולה בספריה stdio.h. ההאבטיפוס של הפונקציה לכתיבת תו לקובץ : FILE *fputc(int ch, FILE *fp); ככלומר הפונקציה מחזירה מצביע לטיפוס FILE,שהוא מבנה אשר מוצהר עליו ב-stdio.h. תתבנית הפונקציה : FPUTC(variable_name, FILE *fp); דדוגמא לשימוש בפונקציה לכתיבת תו לקובץ: fputc(msg[I], fp); אאם הכתיבה נכשלת או שמגיעים לסוף הקובץ, תחזיר הפונקציה EOF

15 14 פונקציה לקריאת תו Fgetc() ההפונקציה ניגשת לקובץ ש-fpמצביע עליו וקוראת תו אחד ומחזירה אותו. לאחר הקריאה יקודם סמן הקובץ לתו הבא. ההאבטיפוס של הפונקציה לקריאת תו מקובץ : FILE *fgetc(FILE *); ככלומר הפונקציה מחזירה מצביע לטיפוס FILE,שהוא מבנה אשר מוצהר עליו ב-stdio.h. תתבנית הפונקציה : fgetc(FILE *fp); דדוגמא לשימוש בפונקציה לקריאת תו מקובץ : msg[I] = fgetc(fp); אאם הקריאה נכשלת או שמגיעים לסוף הקובץ, תחזיר הפונקציה EOF.

16 15 פונקציה לכתיבת שורה () fputs ההפונקציה כותבת לקובץ את המחרוזת שבמשתנה (line)ללא NULLמסיים. ההפונקציה איננה מוסיפה n, CR \או LFבסוף השורה. ההפונקציה מחזירה EOFאם נכשלה או את התו האחרון אם הצליחה ההאבטיפוס של הפונקציה לכתיבת שורה לקובץ : int fputs(const char *, FILE *); תתבנית הפונקציה : intFPUTS(char *line, FILE *fp); דדוגמא לשימוש בפונקציה לכתיבת שורה לקובץ : FILE *fp=fopen(“data.txt”, “wt”); fputs (f_name, fp);

17 16 פונקציה לקליטת מחרוזת (שורה) fgets ההפונקציה דומה לפונקציה ()getsבכך שהיא קוראת שורת טקסט מ- streamשל קלט. המתכנת יכול להגדיר את שם ה-streamהרצוי ואת מספר התווים המרבי שיקראו. ההפונקציה ניגשת לקובץ במקום ש-fpמצביע עליו וקוראת עד ל-Max (פחות 1) תווים או עד לסוף שורה (n, CR, LF\).הנתונים מאוחסנים במשתנה (line)כולל NULLמסיים. הקריאה לתוך מערך מסוג char. ההאבטיפוס : ;(char * fgets(char *str, int n, FILE *fp תבנית הפונקציה : char * fgets (char *line, int Max, FILE *fp); דוגמא לשימוש בפונקציה : ;(FILE *fp=fopen(“data.txt”, “rt” char buffer[100]; while(fgets(buffer, 100,fp)); ההקריאה מתבצעת ל-bufferעד סוף הקובץ. במקרה של שגיאה או סוף הקובץ, תחזיר הפונקציה NULL.

18 17 פונקציה לכתיבת פלט מובנה fprintf ההפונקציה כותבת לקובץ את כל מה שהוגדר במחרוזת הבקרה, כאשר תווי הבקרה המוגדרים בתו % מאפשרים לשלוט באופן כתיבת הנתונים. תבנית הפונקציה : int FPRINTF(FILE *fp, “מחרוזת בקרה”, var1…) דדוגמא : fprintf (fp, “\n%10d %8.2F %25s” a, b, c); יישנם 3 משתנים ולכן גם 3 תווי המרה. ההכתיבה מתבצעת משמאל לימין. למשתנה aמוקצים 10 תווים + רווח. למשתנה bמוקצים 8 תווים מתוכם 2 לאחר הנקודה העשרונית + רווח. למשתנה cמוקצים 25 תווים והוא יכתב כמחרוזת. השורה מסתיימת בתו שורה חדשה (n\). אאם הפונקציה מצליחה - יוחזר מספר התווים שנכתבו. אם הפונקציה נכשלה - יוחזר EOF.

19 18 פונקציה לקריאה קלט מובנה fscanf ההפונקציה () fscanfמשמשת לקריאת קלט מובנה מקובץ לתוך משתנים. תתבנית הפונקציה : int FSCANF(FILE *fp, “מחרוזת בקרה”, &var1…) ההפונקציה תחזיר את מספר הנתונים שנקלטו, הומרו ואוחסנו בהצלחה. אם הפונקציה נכשלת היא תחזיר EOF.

20 19 איתור סוף קובץ EOF ססוף קובץ אפשר לאתר בדרכים הבאות : ללבדוק אם התו התורן שנקרא הוא התו EOF.עלולה להיות בעיה בקבצים בינאריים כיוון שהתו EOFערכו הוא 1- והוא יכול להופיע באמצע הקובץ. דוגמא לשימוש : while ((c=fgetc(fp)!=EOF) { אפשר להמשיך לקרוא ולעבד את הקובץ } בבאמצעות הפונקציה () feof,אשר מחזירה 0 אם לא הגענו לסוף הקובץ או ערך שונה מ-0 אם הגענו לסוף הקובץ. תבנית הפונקציה : int feof(FILE *fp);


Download ppt "1 עבודה עם קבצי טקסט  סוגי קבצים  קובץ טקסט  קובץ בינארי  פתיחה וסגירה של קובץ  פונקציות לקריאה ולכתיבת תו  פונקציות לקריאה ולכתיבת שורה  פונקציות."

Similar presentations


Ads by Google