כתב נושא: שאלת נוב במבוא למדמח  (נקרא 102 פעמים)

0 משתמשים ו- 1 אורח נמצאים בנושא זה.

מנותק snorlax

  • Newbie
  • *
  • Thank You
  • -Given: 14
  • -Receive: 0
  • הודעות: 9
  • ZzZzZzZzZz...
שאלת נוב במבוא למדמח
« ב- : נובמבר 09, 2012, 23:07:42 PM »
אני צריך לקלוט מספר ללא סימן גדול ממש מ-2,
יש דרך לקלוט עם scanf מספר unsigned int ולוודא שבאמת נקלט מספר כזה? כי זה ללא ממש עובד לי

קוד: [Select]
unsigned int x = 0;
scanf("%u", &x);
while (x <= 2 ) {
  scanf("%u", &x);
}

יש עם זה 2 בעיות:
אם מכניסים תו כלשהו שהוא לא מספר יש לולאה אינסופית (הוא נשאר בSTDIN וכל פעם הSCANF לא באמת קולט?)
ואם מכניסים למשל -1 אז זה כן עובר  :?

מנותק radagast

  • פטרון הפורום
  • Hero Member
  • ******
  • Thank You
  • -Given: 72
  • -Receive: 136
  • הודעות: 2,877
  • אשתו של זובין מהטה
בעניין: שאלת נוב במבוא למדמח
« Reply #1 ב- : נובמבר 09, 2012, 23:12:50 PM »
בעיה עם scanf... הייתי מציע לך לקלוט מחרוזת, כך שזה תמיד יעבוד, ואז לבדוק האם זה מתאים.
כנראה שיש דרכים אחרות.
WE NEED TO EAT CAKE / Claude Shannon

I foresee all sorts of of unforeseen problems / Sir Humphrey

מנותק פרומתאוס

  • פטרון הפורום
  • Sr. Member
  • ******
  • Thank You
  • -Given: 13
  • -Receive: 10
  • הודעות: 440
  • חושב מראש
בעניין: שאלת נוב במבוא למדמח
« Reply #2 ב- : נובמבר 10, 2012, 01:13:53 AM »
אם המספר לא גרנדיוזי תקלוט עם char, חיובי בהגדרה.

מנותק Mr.T

  • Newbie
  • *
  • Thank You
  • -Given: 2
  • -Receive: 0
  • הודעות: 4
בעניין: שאלת נוב במבוא למדמח
« Reply #3 ב- : נובמבר 10, 2012, 18:01:07 PM »
אתה בטוח שיכול להיות קלט שהוא לא מספר?  בד"כ במבוא די מגבילים את הקלטים

מנותק ohad

  • Newbie
  • *
  • Thank You
  • -Given: 3
  • -Receive: 3
  • הודעות: 42
בעניין: שאלת נוב במבוא למדמח
« Reply #4 ב- : נובמבר 10, 2012, 19:02:29 PM »
scanf מחזיר את מספר הארגומנטים שהוא קלט בהצלחה או 1- במקרה של כישלון.
לכן בדיקה כזו אמורה לעבוד:
קוד: [Select]
int check;
unsigned int x;
check = scanf("%u", x);
while (check=!1)
check = scanf("%u", x);

Tags: