עבור לתוכן

שאלה בC++ על קבצים

Featured Replies

פורסם

היי, אני צריכה לכתוב שגרה עם קובץ בינארי ולהחזיר: אם הקובץ לא נמצא\ אם הכל פועל כשורה\ אם הקובץ ריק.

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

תודה לעונים, זה ממש דחוף לי :s05:

פורסם

errno הוא משתנה גלובאלי שמכיל מספר המייצג את השגיאה האחרונה שקרתה בתוכנית פחות או יותר.

הקובץ errno.h מכיל את הקבועים האפשריים שהמשתנה הזה יכול להכיל. הנה רשימה של הקבועים שיש:

http://www.opengroup.org/onlinepubs/009695399/basedefs/errno.h.html

הפונקציה perror מדפיסה הודעת שגיאה יפה לפי הערך שנמצא ב-errno

http://www.cppreference.com/stdio/perror.html

התרגיל שקיבלת (אני מניח שזה תרגיל) דורש שתשתמשי ב-errno ותבדקי שהקובץ לא נמצא, או שהוא פשוט דורש לבדוק אם התכנית הצליחה לפתוח את הקובץ או לא?

פורסם
  • מחבר

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

הצלחתי כבר לבדוק אם הקובץ נמצא בעזרת הקבוע EEXIST שבerrno, אבל אני לא יודעת איך לבדוק שהקובץ ריק :nixweiss:

פורסם

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

קוד השגיאה במקרה שאת מנסה לפתוח קובץ שלא קיים הוא ENOENT.

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

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

פורסם
  • מחבר

בקשר לבדיקה אם הקובץ ריק - אני מנסה לקרוא תו => ((fsFile.read((char*) &cChar, size0f(char

ועכשיו איך אני בודקת אם התו לא נקרא..?

ד"א תודה על העזרה שניצל :xyxthumbs:

פורסם

יותר פשוט להשתמש בפונקציה get, שקוראת תו אחד ומחזירה אותו, או eof אם אין מה לקרוא.

חוץ מזה, את יכולה לבדוק את המצב של הסטרים ע"י כל מיני פונקציות כגון good,bad,eof,fail

http://www.cppreference.com/cppio/eof.html

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים