1 SPEAKER: בואו לכתוב תכנית ש מנחה את המשתמש לשמות ו בתיהם של שלושה תלמידים. אבל לא רק להדפיס אותם שמות ובתים למסך, בואו במקום לשמור את המידע שעל דיסק. במילים אחרות, בואו ליצור, למשל, CSV קובץ, לערכים מופרדים בפסיקים, שהוא למעשה רק קובץ טקסט ה תוכניות כמו Excel או מספרים יכול לפתוח, וביעילות להציל את אלה שמות ובתים באופן קבוע, כך ש אנחנו יכולים לעיין בהם מאוחר יותר. לשם כך, בואו נסתכל ראשון איזה קוד מוכן מראש שיש לי התחיל עם כבר. שים לב הראשון שבין הכותרות למעלה הוא עכשיו lib.h הסטנדרטי אשר במקרה יש לי כמה פונקציות הקשורות להגיש I / O, קובץ קלט ופלט. שים לב שאני גם כבר הכריז קבוע בשם תלמידים - בכל כמוסות - ערכו הוא מקודד קשה כשלושה. שים לב עכשיו בתוך זה שלי עיקרי תכנית, אני מכריז מערך של גודל שלושה שימוש קבוע שנקרא תלמידים כל אחד מחבריה הוא הקלד תלמידים. נזכיר כעת כי סטודנט נצטרך להגדיר כבעל שם ובית שני אשר הן מחרוזות כמו לכל זה הכרזה מנחה, שעות נקודה. עכשיו בחזרה בstructs1.c, שים לב שאני יש ללולאה כאן זה הולך לחזר מאפס עד שלוש. זה הולך להנחות אותי לשל הסטודנט שם והבית של תלמיד שוב ושוב ושוב. ואז בחלק התחתון של תכנית זו, שם לב שיש לי עוד ללולאה זה הולך לשחרר את ה-i של התלמיד שם וביתו של תלמיד ה-i ב באופן דומה נבנה לולאה. כדי להיות בטוח, אנחנו יכולים לשלב לולאות אלה לאחד פשוט, אבל אני רוצה יש לי כמה קטעים שונים של קוד לצורך הדיון כאן. עכשיו בין אלה ללולאות, בואו באמת יש להם עוד, ושל זה מטרה בחיים היא להציל למעשה את כל שמות אלה והבתים שהם כרגע ב-RAM לדיסק בצורה ערכים מופרדים בפסיקים. לשם כך, אנחנו הולכים להשתמש שלוש פונקציות חדשות - F פתוח, printf F, וקרוב F, אשר פתיחת קובץ, להדפיס לקובץ, ו לסגור את קובץ. אנחנו יכולים להשתמש בם באופן הבא. קובץ, בכל כמוסות, שהוא במידה מסוימת של סקרנות ב-C, קובץ מקבל fopen סוף ציטוט ציטוט ועכשיו לשם קובץ, למשל, students.CSV, אבל אני יכול קורא לזה משהו ביותר, פסיק ועכשיו אני הולך לציין אחת w בפנים במרכאות כפולות. W, כפי שאתם יכולים לנחש כבר, משמעות הדבר היא כי fopen צריך לפתוח קובץ זה קרא Students.CSV לכתיבה כל כך שאנחנו באמת יכולים לחסוך קצת תוכן אליו. סימון ליד בואו אם קובץ אינו שווה לריק. כי אם כן, משהו כנראה השתבש ובמקרה זה אנו לא צריך להמשיך לנסות כדי להדפיס כל דבר אליו. אבל אם זה לא ריק, ולאחר מכן פנימי של סוגריים מסולסלים אני הולך לחזר מאני שווה 0 בעד סטודנטים, ואני הולך להגדיל i בכל איטרציה. ובתוך לולאה זו, אני הולך fprintf כדי להדפיס לקובץ - במיוחד אחד אני כבר פתחתי - מחרוזת שנראית כמו% s זה,% s קו נטוי הפוך n קרוב ציטוט. ועכשיו אני רוצה לחבר לזה של אלה מצייני הערכים בפועל שמו של תלמיד ובית שימוש באופרטור הנקודה. i.name סוגר תלמידים, תלמידים קרוב i.house סוגר סוגריים נקודת פסיק. עכשיו מתחת לזה ללולאה, אני פשוט הולך לקרוא fclose של קובץ על מנת כדי לסגור את סופו של דבר את הקובץ. כעת, כאשר אני מפעיל תכנית זו, שאני לא צריך ממש לראות כל דבר על מסך, אבל אני צריך להיות אחרי הריצה תכנית זו קובץ בשם Students.CSV באותה הספרייה ש אני מפעיל את הפקודה שבצריך מכיל מופרדים בפסיקים רשימת הערכים. בואו נסתכל. של structs לעשות 1. / סטודנט structs1 שם, נניח דוד, הוא יחיה במאת'ר. שמו של הסטודנט, נניח, לורן, היא מתגוררת בוורט. שמו של הסטודנט, נניח, רוב, הוא יחיה בקירקלנד. עכשיו, שוב, כצפוי, לא מופיע דבר שקרה, אבל תן לי קדימה בשורת הפקודה והסוג students.CSV לערוך גרם בתקווה כי קובץ שאכן קיים. Gedit students.CSV ENTER, ואכן, שם לב שקובץ המכיל אך ורק טקסט, אבל טקסט מופרד בפסיקים עבור כל שדה, אכן קיים. אם והיו שאנחנו משתמשים, לא CS50 מכשיר, אבל מק או מוכרים יותר מחשב, מתברר שאנחנו אכן יכולים לפתוח קובץ CSV עם זה יותר תכנית מוכרת כמו Excel או מספרים.