?
Das wird für visual studio wohl weniger interessant sein, und die meisten Linux-IDEs haben ne sinnvolle Konsoleneinbindung, aber für den Fall der Fälle sähe das ganze mit POSIX so aus:
#include <stdio.h>
#include <termio.h>
void setTerminalBuffering(int new_state) {
static struct termios stored_settings;
static int old_state = 1;
if(!old_state == !new_state) return; //nix zu tun
old_state = new_state;
if(!new_state) {
struct termios new_settings;
tcgetattr(0,&stored_settings);
new_settings = stored_settings;
new_settings.c_lflag &= (~ICANON);
new_settings.c_cc[VTIME] = 0;
tcgetattr(0,&stored_settings);
new_settings.c_cc[VMIN] = 1;
tcsetattr(0,TCSANOW,&new_settings);
} else {
tcsetattr(0,TCSANOW,&stored_settings);
}
}
int main() {
setTerminalBuffering(0); //ab jetzt geht getchar() wie getch()
printf("\n%c\n", getchar());
setTerminalBuffering(1); //jetzt will getchar() wieder ein return haben
return 0;
}
Damit ist es dann auch möglich, ein getch() zu bauen:
int getch() {
int ret;
setTerminalBuffering(0);
ret = getchar();
setTerminalBuffering(1);
return ret;
}