שאלות תרגיל בית 1

שימוש בFILE

שימוש בFILE

על ידי עמית גבאי בתאריך
מספר תגובות: 3

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

1. אם ברצוני להשתמש בfgets ו-fputs על מנת לעשות redirect לפלט מהפלט הסטנדרטי לתוך משתנה מחרוזת,

איך עליי להגדיר את סיומת שם הקובץ בfopen? בשם הקובץ כרגע כתבתי סיומת txt :

("FILE* output = fopen("output.txt", "w

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

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

3. ובמידה ואכן אין לי הרשאה מסויימת והדבר גרם לקוד להיכשל והחזרתי שגיאה מסודרת (כמו שעושים כשmalloc נכשל), האם יורידו על זה נקודות? זאת אומרת אם בסך הכל הקוד שלי עובד אבל הייתה איזשהי בעיה מבחינת מערכת ההפעלה - הקצאת הקובץ נכשלה או לא הייתה הרשאה וטיפלתי במקרה ע"י החזרת השגיאה המתאימה, האם הדבר תקין?

4. ובאופן כללי האם מומלץ להשתמש בקבצים בתרגיל? אני משתמשת בהם כדי להמיר מבנה נתונים שלם לstring וזה מקל מאוד על כתיבת הקוד (לעומת ספירת תווים וקידום המצביע בכל פעם או שימוש בconcatenate).

תודה

 

בתגובה ל: עמית גבאי

תשובה ל: שימוש בFILE

על ידי אורטל כהן בתאריך
היי,
אני לא עונה לגבי כל השאלות (אלא לגבי שאלה 4) - אסור להשתמש בקבצים בתרגיל. ממליצה להשתמש בפונקציות sprintf, atoi, strtok ו-strcat כדי להמיר מבנה נתונים למחרוזות (אתם יכולים לחפש בפורום ובאינטרנט עוד מידע לגביהם).
בתגובה ל: אורטל כהן

תשובה ל: שימוש בFILE

על ידי מאיה שטיין בתאריך
האם אחרי שימוש בפונקציות האלה צריך לוודא שהצליחו? כנ"ל strcpy - צריך לבדוק שהצליח? אם באמת צריך בדיקה בכל אחד מהמקרים זה מאוד יאריך את הקוד...
בתגובה ל: מאיה שטיין

תשובה ל: שימוש בFILE

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