פורום קהילת הסטודנטים בטכניון
טכניוני => עזרה בפיתרון תרגילים => נושא נשלח על ידי: snorlax על נובמבר 09, 2012, 23:07:42 PM
-
אני צריך לקלוט מספר ללא סימן גדול ממש מ-2,
יש דרך לקלוט עם scanf מספר unsigned int ולוודא שבאמת נקלט מספר כזה? כי זה ללא ממש עובד לי
unsigned int x = 0;
scanf("%u", &x);
while (x <= 2 ) {
scanf("%u", &x);
}
יש עם זה 2 בעיות:
אם מכניסים תו כלשהו שהוא לא מספר יש לולאה אינסופית (הוא נשאר בSTDIN וכל פעם הSCANF לא באמת קולט?)
ואם מכניסים למשל -1 אז זה כן עובר :?
-
בעיה עם scanf... הייתי מציע לך לקלוט מחרוזת, כך שזה תמיד יעבוד, ואז לבדוק האם זה מתאים.
כנראה שיש דרכים אחרות.
-
אם המספר לא גרנדיוזי תקלוט עם char, חיובי בהגדרה.
-
אתה בטוח שיכול להיות קלט שהוא לא מספר? בד"כ במבוא די מגבילים את הקלטים
-
scanf מחזיר את מספר הארגומנטים שהוא קלט בהצלחה או 1- במקרה של כישלון.
לכן בדיקה כזו אמורה לעבוד:
int check;
unsigned int x;
check = scanf("%u", x);
while (check=!1)
check = scanf("%u", x);