נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: דילוג מוזר על פקודת gets

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
גיתית
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 April 2007 בשעה 11:45 | IP רשוּם
ציטוט גיתית

בוקר טוב שאלה לי

האם יש איזשהו איסור להשתמש ב gets בתוך case (שהוא חלק מ switch)?

כי אני כותב תוכנית, עם ממשק למשתמש שמציע שתי אופציות לבחירתו שמתורגמות לשני קייסים (case). כאשר מתחיל הקייס השני, יש פקודת הדפסה שמורה למשתמש להקליד מחרוזת של 9 מספרים ותווים מעורבים ביחד, וכשאני עושה דיבוג, החץ הצהוב פשוט עובר על פקודת ה gets של המחרוזת כאילו כלום. פשוט כאילו אין שם כלום. שום דבר לא נכנס למחרוזת הזו מהתווים שהקיש המשתמש. מה שיש בטבלת הערכים זה נקודה, כלומר בדיוק זה:    '.' והערך אסקי כנראה של -52.

קלט אפשרי שיכניס המשתמש הוא כדלקמן : 3y^2+2x^2  ( תשעה תווים בדיוק)

הgets אמור להכניס את המחרוזת לתוך מערך חד מימדי של 10 תאים שקראתי לו             [10]formula שהוגדר כטיפוס char.

char formula [10];

וזה קטע התוכנית: (הברייק הוא סיומו של ה case הראשון)

break;

 

case 2:

printf("enter surface formula:\n");

gets(formula);

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

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 14 April 2007 בשעה 11:15 | IP רשוּם
ציטוט אורח

נו מה קורה אנשים...? קצת עזרה אני תקוע פה!

חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 14 April 2007 בשעה 13:18 | IP רשוּם
ציטוט shoshan

תשלח את הקוד המלא כדי שאלי מישהו עם נסיון בדיבוג יסכים לנסות...

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 14 April 2007 בשעה 14:46 | IP רשוּם
ציטוט Fate

כנראה שנשארו לך תווים בבאפר לפני קריאה לgets ואז הוא השתמש בהם במקום לשאול לתווים חדשים...
לפני הקריאה לgets תעשה flush לבאפר...
fflush(stdin) או משהו דומה...
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 14 April 2007 בשעה 16:23 | IP רשוּם
ציטוט אורח

כנראה שנשארו לך תווים בבאפר לפני קריאה לgets ואז הוא השתמש בהם במקום לשאול לתווים חדשים...
לפני הקריאה לgets תעשה flush לבאפר...
fflush(stdin) או משהו דומה...

 

---------------------------------------------

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

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

יש לך הצעה יותר פשוטה לתקן את הבעיה הזו?
מישהו.....?

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 14 April 2007 בשעה 16:28 | IP רשוּם
ציטוט אורח

shoshan כתב:
תשלח את הקוד המלא כדי שאלי מישהו עם נסיון בדיבוג יסכים לנסות...

אי אפשר זו עבודה של 4 עמודים... ועוד לא סיימתי.

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

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 14 April 2007 בשעה 17:59 | IP רשוּם
ציטוט Fate

אם זה קורה תמיד אתה יכול לעשות gets כפול...
אחד "מנקה" את הבאפר...
והשני אשכרה קולט טת הנתונים החדשים...
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 14 April 2007 בשעה 18:58 | IP רשוּם
ציטוט אורח

Fate כתב:
אם זה קורה תמיד אתה יכול לעשות gets כפול...
אחד "מנקה" את הבאפר...
והשני אשכרה קולט טת הנתונים החדשים...

כן זה די עוזר, תודה.

אבל למה זה קרה לי? כלומר מה הסיבה שכבר נכנסו נתונים אל תוך המחרוזת למרות שלא לחצתי על כלום מלבד 3 מספרים שנקלטו בנפרד לתוך 3 משתנים . בשום שלב לא לחצתי על נקודות. למישהו יש הסבר לתופעה?

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

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 15 April 2007 בשעה 00:33 | IP רשוּם
ציטוט Fate

קליטת מספרים משאיר את המקש Enter או מה שזה לא יהיה שמופיע אחרי המספר האחרון בתוך הבאפר...
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 

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

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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