שאלה ב C

neko

New member
למיטב ידיעתי, הפקודה היא getch(),

והיא תקבל מהמקלדת אות אחת ותכניסה לCH...
 

g u y c o h e n

New member
אם כך.....

מסתבר שהיא עושה הרבה יותר ולא בדיוק קלט מהמקלדת: מה מבצעת התכנית הבאה:
#include <stdio.h> #include <conio.h> main() { int ch,count=0; clrscr(); ch = getchar(); while( EOF != ( ch=getchar() ) ) { if(ch ==' ' || ch=='\n') count++; } printf("\n%d",count); return 0; }​
כולם טועים זה בסדר
 

g u y c o h e n

New member
שכחתי משהו

קלט עבור התכנית: helo getchar very nice to meet you ולסיים עם CTRL+Z אחרי ה ENTER
 

muga

New member
מדפיסה 7

התוכנית קולטת תו תו מהמקלדת עד שמגיעים לתו EOF (הcntrl+z שלוחצים בסוף). התוכנית סופרת את מספר הרווחים או שורות חדשות בקלט ובסוף מדפיסה את המספר.
 

nosfera2

New member
זה נכון אבל

"התוכנית קולטת תו תו מהמקלדת עד שמגיעים לתו EOF (הcntrl+z שלוחצים בסוף)". זה גם מה שאני חשבתי, אבל הקלט של כל המשפט מתבצע ב getchar הראשון מחוץ ללולאה, ומסתיים לפני הכניסה ללולאה, אפשר לראות את זה ב DEBUGGER. בלולאה - הgetchar שבלולאה מקבל קלט מ מה stdin ואחרי כל פקודת getchar המצביע מתקדם לתו הבא.
 

זהיר

New member
ה GETCHAR הראשון מיותר

ויגרום שגיאה בספירה אם הקלט מתחיל ברווח או בשורה ריקה (הוא אוכל רק תו אחד - לא יותר).
 
למעלה