ผมสงสัยตรงบรรทัดที่เป็นตัวเอน ch=getch โดยถ้าเปลี่ยนบรรทัดนี้จาก ch=getch เป็น ch=getchar พอรันแล้วมันไม่แสดงผลตามต้องการเหมือน ch=getch มันเป็นเพราะอะไ. Use of getch,getche and getchar in C Overview Most of the program is ending with getch, and so we think that getch is used to display the output.but it is wrong.It is used to get a single character from the console.

Function 'clrscr' (works in Turbo C++ compiler only) clears the screen and moves the cursor to the upper left-hand corner of the screen. If you are using the GCC compiler, use system function to execute the clear/cls command.

C programming code for clrscr

#include<stdio.h>
#include<conio.h>

int main()
{
printf('Press any key to clear the screen.n');

getch();

clrscr();

printf('This appears after clearing the screen.n');
printf('Press any key to exit...n');

getch();
return0;
}

In the program, we display the message (Press any key to clear the screen) using printf and ask the user to press a key. When the user presses a key screen will be cleared and another message will be printed. Function clrscr doesn't work in Dev C++ compiler. Use the cleardevice function instead of clrscr in graphics mode.

Clear screen in C without using clrscr

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf('Press any key to clear the screenn');
getchar();

system('clear');// For Windows use system('cls');
return0;
}

Name

getch, wgetch, mvgetch, mvwgetch, ungetch, has_key - get (or push back) characters from curses terminalkeyboard

Synopsis

#include <curses.h>

int getch(void);
int wgetch(WINDOW *win);
int mvgetch(int y, int x);
int mvwgetch(WINDOW *win, int y, int x);
int ungetch(int ch);
int has_key(int ch);

Description

The getch, wgetch, mvgetch and mvwgetch, routines read a character from the window. In no-delay mode, if no input is waiting,the value ERR is returned. In delay mode, the program waits until the system passes text through to the program. Depending on the setting ofcbreak, this is after one character (cbreak mode), or after the first newline (nocbreak mode). In half-delay mode, the program waits until a characteris typed or the specified timeout has been reached.

Unless noecho has been set, then the character will also be echoed into the designated window according to the following rules: If the character isthe current erase character, left arrow, or backspace, the cursor is moved one space to the left and that screen position is erased as if delch had beencalled. If the character value is any other KEY_ define, the user is alerted with a beep call. Otherwise the character is simply output to thescreen.

If the window is not a pad, and it has been moved or modified since the last call to wrefresh, wrefresh will be called before anothercharacter is read.

Getch

If keypad is TRUE, and a function key is pressed, the token for that function key is returned instead of the raw characters. Possible functionkeys are defined in <curses.h> as macros with values outside the range of 8-bit characters whose names begin with KEY_. Thus, a variableintended to hold the return value of a function key must be of short size or larger.

When a character that could be the beginning of a function key is received (which, on modern terminals, means an escape character), curses sets atimer. If the remainder of the sequence does not come in within the designated time, the character is passed through; otherwise, the function key value isreturned. For this reason, many terminals experience a delay between the time a user presses the escape key and the escape is returned to the program.

The ungetch routine places ch back onto the input queue to be returned by the next call to wgetch. There is just one input queue forall windows.

Function Keys

The following function keys, defined in <curses.h>, might be returned by getch if keypad has been enabled. Note that not all ofthese are necessarily supported on any particular terminal.

Keypad is arranged like this:

The has_key routine takes a key value from the above list, and returns TRUE or FALSE according to whether the current terminal type recognizes a keywith that value. Note that a few values do not correspond to a real key, e.g., KEY_RESIZE and KEY_MOUSE. See resizeterm(3X) for moredetails about KEY_RESIZE, and curs_mouse(3X) for a discussion of KEY_MOUSE.

Return Value

All routines return the integer ERR upon failure and an integer value other than ERR (OK in the case of ungetch()) upon successfulcompletion.

Getch C++ Library

Portability

The *get* functions are described in the XSI Curses standard, Issue 4. They read single-byte characters only. The standard specifies that they returnERR on failure, but specifies no error conditions.

The echo behavior of these functions on input of KEY_ or backspace characters was not specified in the SVr4 documentation. This description isadopted from the XSI Curses standard.

The behavior of getch and friends in the presence of handled signals is unspecified in the SVr4 and XSI Curses documentation. Under historical cursesimplementations, it varied depending on whether the operating system's implementation of handled signal receipt interrupts a read(2) call in progress ornot, and also (in some implementations) depending on whether an input timeout or non-blocking mode has been set.

Getch In Dev C++ Download

Programmers concerned about portability should be prepared for either of two cases: (a) signal receipt does not interrupt getch; (b) signal receiptinterrupts getch and causes it to return ERR with errno set to EINTR. Under the ncurses implementation, handled signals neverinterrupt getch.

The has_key function is unique to ncurses. We recommend that any code using it be conditionalized on the NCURSES_VERSION featuremacro.

See Also

C++ Int Getch

curses(3X), curs_inopts(3X), curs_mouse(3X), curs_move(3X), curs_refresh(3X), resizeterm(3X).

Getch Not Working In Dev C++

Comparable functions in the wide-character (ncursesw) library are described in curs_get_wch(3X).