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

בדיקת תקינות אחרי שימוש בפונקציות מסויימות

בדיקת תקינות אחרי שימוש בפונקציות מסויימות

על ידי מאיה שטיין בתאריך
מספר תגובות: 6

האם אחרי שימוש ב sprintf, atoi, strtok ,strcat, strcpy  צריך לוודא שהצליחו? אם באמת צריך בדיקה בכל אחד מהמקרים זה מאוד יאריך את הקוד... 

 

ועוד שאלה - צריך לעשות תיעוד לelection.h? אלה הפונקציות שקיבלנו בתיאור של התרגיל (וקיבלנו את הקובץ h בלי תיעוד) - רק לוודא שבאמת לא צריך

בתגובה ל: מאיה שטיין

תשובה ל: בדיקת תקינות אחרי שימוש בפונקציות מסויימות

על ידי אורטל כהן בתאריך
1. כן במקרה שהם נכשלו יש להחזיר ערך שגיאה ELECTION_ERROR (שימו לב שאתם יכולים במקרים מסוימים להוציא את הבדיקות האלה לפונקציה נפרדת - כך יחסכו לכם שכפולי קוד).
2. לא (אסור לכם גם להגיש את election.h).
בתגובה ל: אורטל כהן

תשובה ל: בדיקת תקינות אחרי שימוש בפונקציות מסויימות

על ידי עינב הוברמן בתאריך
בהודעות קודמות ציינתם כי צריך לבדוק תקינות של sprintf,atoi,strtok אך אמרתם שאין צורך לבדוק תקינות של strcat,strcpy.
האם כעת צריך לבדוק להכל או רק לאלו שציינתם בעבר שצריך לבדוק?
בתגובה ל: אורטל כהן

תשובה ל: בדיקת תקינות אחרי שימוש בפונקציות מסויימות

על ידי אביב שחק בתאריך
לפי התיעוד הרשמי של strcat ו-strcpy אין ערך חזרה שמעיד על שגיאה. ובתיעוד של strtok לא כתוב על ערכי שגיאה בכלל, והיא מחזירה char*, לכן באופן תיאורתי היא יכולה להחזיר שגיאה רק אם מוחזר NULL, אך החזרת ה -NULL בוודאות לא מעידה על שגיאה, כי היא מעידה על כך שסיימת לרוץ על ה - token. האם עבור 3 פונקציות אלו, לא צריך לבדוק ערך שגיאה? אם כן, איך אפשר לבדוק להן ערך שגיאה?
בתגובה ל: אביב שחק

תשובה ל: בדיקת תקינות אחרי שימוש בפונקציות מסויימות

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

תשובה ל: בדיקת תקינות אחרי שימוש בפונקציות מסויימות

על ידי אביב שחק בתאריך
במקרים בהם אנו בטוחים שלא תהיה שגיאה, אמרת שאפשר להשתמש ב-assert. הכוונה היא לעשות assert על הקלט של strcpy לפני הקריאה ל-strcpy?