עבור לתוכן

שאלה לגבי פקודה SCANF

Featured Replies

פורסם

שלום! התחלתי לא מזמן ללמות תכנות ואני משתמש בתוכנה MS VISUAL C++ 2008 EXPRESS. כשאני משתמש בפקודה SCANF ו בסוף עושה COMPILE התוכנה נותנת לי אזהרה שעדיף להשתמש בפקודה SCANF_S. מה הבדל בין שני הפקודות האלה? כי גם כך וגם כך התוצאה יוצאת זהה?

תודה.

פורסם

בינתיים אין בעיה שתשתמש ב-scanf ותתעלם מהאזהרה הזו.

הסבר:

scanf היא פונקצייה בעייתית קצת, כי היא פגיעה ל-buffer overflow. אני לא יודע אם למדת על מחרוזות, אבל בגדול כשאתה רוצה לקרוא מחרוזת מהקלט, אתה צריך להעביר ל-scanf משתנה מטיפוס מערך של char, שהגודל שלו הוקצה מראש. אם המחרוזת שאתה קורא יותר ארוכה מגודל המערך שנתת לפונקציה, אז המחרוזת תגלוש מעבר לגבולות המערך, מה שנקרא buffer overflow (וזה באג מאוד חמור, שיכול לגרום להמון בעיות).

הפונקציה scanf_s מונעת (או לפחות מנסה למנוע) שגיאות כאלה. התוצאה אמורה לצאת זהה.

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

פורסם
  • מחבר

סבבה. תודה.

פורסם

סתם שאלה- למה אתה לא משתמש ב cin?

פורסם
  • מחבר

אני רק התחלתי ללמוד את הקורס במסגרת התואר שלי ועברתי רק 4 הרצאות כך שאני לא יודע בינתיים על מה אתה מדבר

פורסם
  • מחבר

C++

פורסם

אז מוזר שמלמדים אתכם scanf ולא cin. איפה אתה לומד?

פורסם
  • מחבר

במכללה "סמי שמעון" אני לומד שם תואר ראשון להנדסת מכונות ויש לנו קורס C++ בתוכנית לימודים... מה הבדל בין SCANF לCIN?

פורסם

במכללה "סמי שמעון" אני לומד שם תואר ראשון להנדסת מכונות ויש לנו קורס C++ בתוכנית לימודים... מה הבדל בין SCANF לCIN?

scanf היא פונקציה של C.

בC++ משתמשים בפונקציית cin על מנת לקבל קלט.

int a;

cin >> a;

qq

פורסם
  • מחבר

טוב לדעת... מחר יש לי שיעור אני ישאל את המרצה

ארכיון

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

דיונים חדשים