לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 28-11-2010, 13:56
  1111 1111 אינו מחובר  
 
חבר מתאריך: 09.03.03
הודעות: 246
[C] למה אני נכנס ללופ אינסופי

כתבתי תוכנית עם תפריט שעובד על SWITCH ו- CASE.

יש לי 7 קייסים ו- DEFAULT

כל עוד המשתמש מכניס מספרים הכל עובד טוב ויפה.

ברגע שהוא מכניס אות נהיה בלאגן.

כדי למנוע את זה הכנסתי את השורה הבאה אחרי הקליטת קלט:
קוד:
if (choice>7 || choice<1) return 0;


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

יש דרך למנוע את הלופ הזה ולגרום לו לצאת ברגע שהקלט הוא לא 1-7?
* או לגרום לו לחזור שוב לקליטת קלט


צירפתי קטע קוד שכתבתי עכשיו כדי להמחיש את הבעיה (תכניסו מספר ואז אות ותקבלו לופ אינסופי):

קוד:
#include <stdio.h> #include <string.h> int main () { int exit=0; int choice; while (!exit) { scanf("%d",&choice); system( "clear" ); if (choice>3 || choice<1) return 0; switch (choice) { case 1: { printf("1\n"); break; } case 2: { printf("2\n"); break; } case 3: { printf("3\n"); break; } default: { exit=1; break; } } } }
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 03-12-2010, 09:26
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 8 שנכתבה על ידי 1111 שמתחילה ב "עוד סיבה ש-CHAR לא מתאים היא..."

קליטת char בודד מתאימה להקלקת תו בודד.
אם אתה רוצה לתפוס את כל הקייסים האפשריים, אתה יכול לקלוט מחרוזת ואז לרוץ עליה ולוודא שמדובר במספרים, אבל זה מיותר כיוון שאתה יודע מראש שהקלט שלך לא יעבור את התו הבודד (כלומר, האופציות הן ספרה אחת).
אתה יכול לקלוט את הבחירה שלך למשל ב getchar ואז ברגע שהמשתמש לוחץ במקלדת על המקש, זה ישר נקלט (ללא צורך לחכות ל enter). זה יפתור לך את הבעיה כיוון שגם אם ינסה להכניס "26", התפריט יטפל ב "2" לפני שיספיק ללחוץ על 6.
אם אתה רוצה לאפשר למשתמש ללחוץ על כל צירוף אפשרי, ואז enter, אתה יכול להכניס את הקלט למחרוזת של X תווים כך תוכל לבדוק מה המשתמש הכניס לך.

נגיד משהו כזה:
זהירות - ספויילר!
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 19:22

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר