פורסם 2012 בנובמבר 1913 שנים שניצל, בדרך כלל אני מסכים עם העצות שלך, פה אני חושב שיש דרך יותר טובה.אם אתה קורא את התוכנית בעתיד הרווח הוא כמעט בלתי נראה, ואם יש בעיה אז קשה להבין מה קרה. אני חושב שהרבה יותר טוב לרשום בפקודה בשורה נפרדת ניקוי BUFFER. אני מבין שפה יש לזה אותו אפקט אבל אני באמת לא חושב שמישהו שהוא לא מפתח ב C ידע לקרוא את התוכנית בצורה מהירה, אלא רק אחרי חפירות.אם יש סיבה אחרת לשימוש ברווח אשמח לשמוע.עריכה: אני רואה ש Access denied המליץ גם על זה.
פורסם 2012 בנובמבר 1913 שנים רק שניקוי ה stdin זה גם דבר שאינו תקני (כן, גם אני מאוד הופתעתי) ועובד רק בחלק מהקומפיילרים (כן, אין דרך סטנדרטית לנקות את ה-buffer). אפשר לפתור את זה בקלות ע"י לולאה פשוטה, או פשוט לכתוב הערות בקוד, שידגישו את הרווח הזה. חוץ מזה, אפשר גם לשים יותר מרווח אחד, ואז אי אפשר לפספס את זה (הפונקציה לא מתייחסת לזה, כל עוד יש רווח זה לא משנה אם זה רווח אחד או יותר).
פורסם 2012 בנובמבר 1913 שנים רק שניקוי ה stdin זה גם דבר שאינו תקני (כן, גם אני מאוד הופתעתי) ועובד רק בחלק מהקומפיילרים את זה לא ידעתי, תודה.
פורסם 2012 בנובמבר 1913 שנים יש פיתרון מעניין לבעיה שיגאל מעלה אפשר לרשום משהו כזה:scanf(" " "%c",&G);לפי התקן כשהקומפיילר רואה שני מחרוזות רצופות הוא מאחד אותם.שלב הבא: ניתן לשלב מאקרו כך#define SKIP_WHITESPACES " "scanf(SKIP_WHITESPACES "%c",&G);
פורסם 2012 בנובמבר 1913 שנים רק שניקוי ה stdin זה גם דבר שאינו תקני (כן, גם אני מאוד הופתעתי)מאיפה הביסוס שלך לזה בדיוק? הסתכלתי בוויקיפדיה בעמוד https://en.wikipedia.org/wiki/ANSI_Cומהלינקים שם בסוף יש טיוטה של התקן משנת 1988: http://flash-gordon.me.uk/ansi.c.txtו-fflush מוזכר שם. אם יש קומפיילר שלא ממש אותו אז הוא לא מממש את התקן.
פורסם 2012 בנובמבר 2013 שנים לא אמרתי ש-fflush לא תקני, אמרתי ש-(fflush(stdin לא תקני.ציטוט מתוך התקן שקישרת אליו:4.9.5.2 The fflush function If stream points to an output stream or an update stream in whichthe most recent operation was output, the fflush function causes anyunwritten data for that stream to be delivered to the host environmentto be written to the file; otherwise, the behavior is undefined.ובסוף המסמך, תחת הכותרת "Undefined behavior": * The stream for the fflush function points to an input stream or to an update stream in which the most recent operation was input ($4.9.5.2).דהיינו, הפעולה לא מוגדרת עבור input stream.
פורסם 2012 בנובמבר 2113 שנים יואב, אפשר ליצור באפר בגודל 200 (בהנחה שטקסט שמוכנס קטן מ-200) וכל פעם לנקות אותו ולהשתמש ב-sscanf.זה אמור לעבוד, לא?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.