עבור לתוכן

כיצד להגביל את קלט המשתמש לתו אחד בלבד בC?

Featured Replies

פורסם

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

הביאו לי שיעורי בית לרשום תוכנית לא מסובכת ב C, שכבר סיימתי אותה, אך נשאר לי חלק קטן בו אני צריך להגביל את הקלט שאני מקבל מההשתמש במספר שלבים בתוכנית.

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

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

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

תודה ושבוע מצויין לכולם!

פורסם

יש להשתמש בפונקצית scanf

הפונקציה מקבלת מחרוזת פורמט אשר קובעת איך יטופל הקלט

לדוגמא קליטת תו:

char c;

scanf("%c",&c);

קליטת מספר:

int num;

scanf("%d",&num);

פורסם
  • מחבר

אוקיי, אם התו הסתדרתי.

אך עדיין נשארה השאלה איך אני מגביל את הקלט למספרים בלבד, או אם לדייק:

אני צריך להגדיר תנאי שהקלט יהיה בין 25 ל 50 בלבד, ואם המשתמש מקיש מספר כלשהו אחר התוכנית תציג הודעה מסויימת ותמשיך לרוץ,

ואם המשתמש יקיש כל תו אחר (לדוגמא אות כלשהי או &,*,%,^) התוכנית תציג הודעה שגיאה ותסגר.

מקווה שהייתי מובן בתיאור שלי.

התאים האפורים שלי כבר מתים מעייפות ולא מסוגלים לעשות דבר, אך אני עדיין נחוש לסיים את זה ובנתיים ללא כל הצלחה :kopfpatsch:

עריכה:

אני מוסיף קטע קוד בשביל להיות ברור יותר -

if(size=='b'){
printf("enter circum\n");
scanf("%d", &circum);
if(circum<=50.0 && circum>=25.0)
printf("The option is good\n");
else
printf("The option is bad\n");}

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

ושוב תודה על העזרה.

פורסם

תשתמש בערך המוחזר מscanf(מספר הקלטים שנקלטו בהצלחה).

במקרה שלך אם הוא שווה ל1 הוא תקין אם הוא 0 כנראה שהמשתמש הקליד תו לא חוקי.

הערה:

השימוש באחוז d טוב רק למספרים שלמים למספרים עשרוניים צריך להשתמש באחוז f או lf או Lf ,תלוי בסוג(float או double או long double).

פורסם
  • מחבר

תוכל בבקשה לפרט קצת יותר, כי לא כל כך הבנתי אותך.

מה זאת אומרת "ערך מוחזר מscanf"? איך אני מיישם את זה?

תודה.

פורסם

scanf היא פונקציה שמחזירה ערך מימוש הוא כך:

if(1 !=scanf("%f",&myfloat))

{

//code

}

ארכיון

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

דיונים חדשים