עזרה קטנה בC

  • פותח הנושא 5h4y
  • פורסם בתאריך

5h4y

New member
עזרה קטנה בC

יש לי את הקוד הזה:
int main() { int a; while ((a = getchar()) != EOF) putchar(a); printf("end"); return 0; }​
איך אני יכול לעצור את הקלט? אני ניסיתי ctrl+z ו ctrl+c אבל זה יוצא מהתוכנית כולה ולא מדפיס את ה "end" אני משתמש ב borland אם זה משנה תודה מראש.
 

ahardon

New member
לא יודע איך זה בדוס

אבל בלינוקס ctrl+d מעביר EOF, בכל מקרה אם אתה מקבל קלט ממשתמש נראה לי שעדיף שתחליף את EOF, במשהו אחר...
 

selalerer

New member
אתה יכול להעביר איזה קוד שאתה רוצה

לתוכנה בעזרת החזקת הALT ולחיצה של המספר בkeypad (בצד ימין של המקלדת) אבל אני לא זוכר מה הערך של EOF תדפיס ותבדוק.
 

5h4y

New member
לא הולך

בחלק מן המספרים שם זה מדפיס לי סמיילים, השאר לא עושים כלום
 

selalerer

New member
סמיילים זה הייצוג הASCII של 5 או 6

או משהו כזה בDOS. תיקח טבלת ASCII או שתעשה
putchar((char)EOF);​
ותבדוק מה הקוד ASCII של EOF ותקיש אותו.
 

5h4y

New member
לא הולך

בחלק מן המספרים שם זה מדפיס לי סמיילים, השאר לא עושים כלום
 

yossi1981

New member
הנה התשובה האמיתית פה

זה מהדר של בורלנד , כאשר נגמרת תוכנית הוא מיד סוגר אותה. תכניס את הפקודה getchar() לפני הRETURN 0 וזהו.
 

frangelico

New member
ה putchar מיותר

כי הוא לא נכנס ללולאה אחרי כל תו אלא רק בסוף הקלט תנסה
 

5h4y

New member
כן אני יודע

זה מה שרציתי לעשות. זה גם לא עובד בלי בכל מקרה
 

DadleFish

New member
זה מוזר,

CTRL+Z נועד בדיוק למטרה הזו... אולי בורלנד עושה בעיות למרות שקשה לי להאמין שזה בגללו.
 

5h4y

New member
selalerer

אי אפשר להדפיס את EOF, הערך אסקיי שלו זה
-1​
 

selalerer

New member
כן שזה מקביל ל65536 אבל אני מניח שז

ה לא יעבוד כבר. תשתמש בתו אחר, קיבינימאט, למה זה חייב להיות EOF
 
למעלה