פורסם 2013 בנובמבר 1112 שנים מצורף הקוד.למשל כשאני מכניס מספר שלילי או לא שלם הלולאה מגיבה טובה, ומדפיסה שוב להכניס מספר וקולטת בהתאם. כשאני מכניס מחרוזת, זה מדפיס לי אינסוף פעמים enter a number, מבלי לחכות לקלט. כאילו שזה מדלג על ה cin. מה הבעיה פה?
פורסם 2013 בנובמבר 1112 שנים אם cin נכשלת לקרוא את הקלט אז היא לא מדלגת עליו - השימוש הבא ב-cin ינסה לקרוא את אותו הקלט שוב לתוך number, ושוב הוא לא יצליח כי הקלט מכיל תווים לא מספריים, וכך חוזר חלילה.אתה צריך לבדוק את הערך של ()cin.fail כדי לדעת אם הקריאה האחרונה הצליחה (יש עוד כמה דברים שצריך לבדוק אבל הם לא רלוונטיים כאן). אם היא לא הצליחה אז אתה צריך לאפס את הסטטוס באמצעות ()cin.clear ואז לדלג על הדבר האחרון שהמשתמש הכניס, לדוגמה באמצעות קריאה לתוך אובייקט string זמני.
פורסם 2013 בנובמבר 1112 שנים קודם תעשה clear, אחר כך תקרא לתוך temp. חוץ מזה אל תקרא לתוך []char, תקרא לתוך string.
פורסם 2013 בנובמבר 1112 שנים ב-C משתמשים ב-scanf, שמחזירה כמה משתנים היא הצליחה לקרוא בהצלחה. אם לדוגמה היא הייתה אמורה לקרוא מספר אחד והצליחה אז היא תחזיר 1, אחרת היא תחזיר 0. בשביל לדלג על התווים הבעיתיים אפשר לעשות כזה דבר:scanf("%*s");ה-s% אומר לקרוא מחרוזת, אבל ה-* אומר להתעלם ממנה ולא לשמור אותה בשום משתנה.
פורסם 2013 בנובמבר 1112 שנים מחבר לא ממש הבנתי איך אני אמור לעשות שימוש בערך המוחזר מ scanfיעזור אם תרחיב עוד נערך 2013 בנובמבר 1112 שנים על-ידי א
פורסם 2013 בנובמבר 1112 שנים מחבר עשיתי את זה, אבל אם לא הוכנסה מחרוזת, אני צריך לעשות שוב scanf ואז למעשה המשתמש צריך להכניס שוב את המספר
פורסם 2013 בנובמבר 1112 שנים אם לא הוכנס שום קלט אז scanf (בדיוק כמו cin) מחכה עד שיהיה קלט כלשהו.אתה צריך לעשות את זה בלולאה, בדיוק כמו שעשית עם cin.
פורסם 2013 בנובמבר 1112 שנים אתה יודע איך לקרוא מספר מהמשתמש?אתה יודע איך לבדוק אם הקריאה הזו הצליחה? (רמז: אמרתי לך בדיוק מה לעשות בהודעה קודמת)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.