Mac(gcc)で、C言語関数 getch関数を使う。
2020.12.05
この記事は最終更新日から1年以上が経過しています。
C言語のプログラムを見ているとよく出るgetch関数。
キーボード入力を取得する関数ですが、MacOSで使おうとしても、conio.hがないよと言われます。
MS-DOS用のものなので、gccにはないのですが、以下のヘッダーファイルを作成で使えるようになります。
conio.h
#include <termios.h> #include <unistd.h> #include <stdio.h> /* reads from keypress, doesn't echo */ int getch(void) { struct termios oldattr, newattr; int ch; tcgetattr( STDIN_FILENO, &oldattr ); newattr = oldattr; newattr.c_lflag &= ~( ICANON | ECHO ); tcsetattr( STDIN_FILENO, TCSANOW, &newattr ); ch = getchar(); tcsetattr( STDIN_FILENO, TCSANOW, &oldattr ); return ch; } /* reads from keypress, echoes */ int getche(void) { struct termios oldattr, newattr; int ch; tcgetattr( STDIN_FILENO, &oldattr ); newattr = oldattr; newattr.c_lflag &= ~( ICANON ); tcsetattr( STDIN_FILENO, TCSANOW, &newattr ); ch = getchar(); tcsetattr( STDIN_FILENO, TCSANOW, &oldattr ); return ch; }
#include "conio.h" int main() { int ch; ch = getch(); }
conio.hファイルを作成し、includeしてgetch関数を利用する事ができます。
switch(getch()) { case 's': // キーボードのsが入力された時の処理 break;
といった感じで無事入力判定を取得出来ました。