עבור לתוכן

[שאלה]צביעת טקסט וקליטת תו בשפת C

Featured Replies

פורסם

איך אני משנה את צבע הטקסט והרקע בחלון הדוס של הקימפול בשפת C ?

ויש תפקודה getchar(); אבל לא ניתן להזין בה ערכים (לקבוע איזה תו לקלוט) אז רציתי לשאול מה הפקודה (אם יש בכלל) שבודקת איזה תו נכלל נגיד משהו כזה ... הפקודה רק לשם דוגמא

if(presschar("esc"))
{
}

מקווה שזה מובן ... אשמח לעזרה

פורסם

getchar מחזיר ערך של התו שנקלט. אתה יכול לבדוק את הערך חזרה ולהשוות אותו למה שאתה רוצה ולפעול על פי זה.

לגבי השאלה של צבע טקסט ורקע חלון זה תלוי באיזה קומפיילר אתה משתמש.

פורסם
  • מחבר

למה הכוונה מחזיר תו ?

אני יכול לעשות

 char a[256];
a=getchar();
if(strcmp(a,"esc")==0)
{
}

?

אי אפשר לעשות שהתוכנית תרוץ בלולאה אינסופית ופשוט המשתמש יוכל להקיש איזשהו מקש מתי שמתחשק לו ואחד התנאים יקלוט ?

ואני משתמש ב dev++

פורסם

אתה יכול לעשות מה שאתה רוצה במיוחד בשפה כזו בעייתית כמו C, אבל לרוב אם אתה לא יודע מה אתה עושה אתה תקבל שטוית.

getchar מחזיר תו אחד בלבד, ולכן אין צורך להקצות מערך אלא פשוט char אחד ולהשוות אותו ישירות למה שאתה רוצה.

אם אתה רוצה לקלוט מחרוזת ולהשוות את כולה ביחד, תשתמש בפקודה scanf.

בקשר לצבעים תסתכל למטה פה:

http://www.daniweb.com/code/snippet83.html

פורסם

למיטב זכרוני, getchar עובד קצת שונה עבור מקשים מיוחדים (מקשים שאינם תווים דפיסים כמו אותיות או מספרים).

במקרה שלוחצים על מקש כזה, אז getchar מחזיר 0. אז צריך לבצע שוב getchar, בשביל לקלוט את הערך האמיתי:

int ch = getchar();
if (ch == 0)
{
ch = getchar();
// handle special characters here
}
else
{
// handle normal characters here
}

פורסם
  • מחבר

while(getchar()==1)
{
printf("bla bla");
}

עפ"י היגיון הוא אמור לכתוב bla bla באופן אינסופי עד שאני מקיש מקש ... אם כי הוא פשוט לא מבצע את זה .....

פורסם

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

פורסם

ההיגיון שלך שגוי

המספר שכתבת הוא בקוד אסקיי, והוא שווה ל :D לבן (סמיילי לבן כזה של אסקיי חח)

קיצר, אם אתה רוצה לעשות השוואות כאלה תעשה "1" או לפי קוד אסקי, שהמספר 1 שווה ל49

ובעקבות השגיאות האלה, הוא לא נכנס לך ללולאה בכלל

פורסם
  • מחבר

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

אני יכול להשוות את הפקודה הזאת לתו מסויים ? אני עברתי על קוד אסקי אבל הוא מחולק לבסיסים שונים אקסדצימלי בינארי HTML ועוד משהו ....

אני לא יודע איזה מהם אני צריך ... מעצה של חבר ניסיתי לשים בסיס אקסדצימלי אבל המחשב לא ממש מבין .....

if(char==8)
{
}

כמובן שלא השתמשתי במשתנה char כי זאת מילה שמורה (או לפחות נראה לי שככה קוראים לזה) אלא במשתנה אחר ... 8 זה לפי בסיס הקסדצימלי הכפתור של מחיקה .. כאילו הכפתור backspace)

מישהו יכול לתת לי דוגמא של השוואה למקש על המקלדת ? ולא לתו מסויים כי במקרה של השוואת תו אני תמיד יכול לעשות

if(char=='c')

...

נגיד למקש ה backspace תודה מראש ... לגבי שינוי הצבעים אני מצאתי את הפקודות ... אבל איך לא פקודות של הספריה conio לא ממש עובדות וצריך להגדיר אותם ...

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים