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;
といった感じで無事入力判定を取得出来ました。
















