עזרה בC

פירמה 1

New member
עזרה בC

אני צריך בתוכנית שלי לקבל מספרים, למשל 123403, אך התוכנית צריכה לקרוא אותם תו תו (בהתחלה כchar ואח"כ להפוך אותם לאינטג'ר). הבעיה שלי שניסיתי לעשות לולאת while שבתוכה יש scanf("%C"), התוכנית דורשת ממני להקיש אנטר כדי להמשיך לקלוט את התו הבא.. תודה לעוזרים!
 

InfectedM

New member
תוכל לעבוד עם getch() בצורה כזו:

int ch; ch = getch();
הפונקציה תקלוט כל תו שנלחץ במקלדת(ללא צורך באנטר). בהצלחה.​
 

IP yuval

New member
זאת פונקציה מקוללת. כדאי להשתמש

בפונקציה getchar(), שנמצאת בstdio.h. היא מחזירה int, וכדאי לבדוק אם הוא שונה מEOF (שלא נכנס בchar), שזה בעצם סיום הקלט של קובץ, אבל אפשר גם לדמות אותו עם CTRL+d או קיצורים אחרים למערכות הפעלה שונות. עוד מידע אפשר למצוא במנועי החיפוש ובספרים המובילים.
 

פירמה 1

New member
הבעיה אבל

שאני לא רוצה להפוך אותם לאינטג'ר עדיין אני רק רוצה פקודות שיגרמו לתוכנית לקלוט תו תו ללא צורך באנטר
 

vinney

Well-known member
אין כזה דבר "תו"

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

פירמה 1

New member
לא ולא!

נגדיר ;char tav ;int integer ;'tav='3 כאן נקבל את התו 3 ולא הספרה 3 ;integer=tav ורק אז נקבל את הערך האסקי שלו בתוך integer
 

vinney

Well-known member
לא הבנתי מה ניסית להגיד

אבל ערך שיהיה בTAV יהיה זהה לערך שיהיה ב INTEGER. שניהם יהיו המספר הסידורי של התו 3 בטבלת ASCII.
 

פירמה 1

New member
כל מה שרציתי

שנסרוק באמצעות C% ולא d% כל ספרה בנפרד ואז כבר יש פתרונות איך לטפל בה (למשל להוריד לערך האסקי שלה 48 ולקבל את המס' האמיתי...) כל הסיבוך היה איך כשמכניסים 12345 הוא יקבל '1' ואז '2' וכו'.. יש מבין?
 
למעלה