我在C中有一个非常简单的程序:
#include <stdio.h>
int main() {
char c;
int i;
if( (c = getchar()) == 'a')
printf("pressed a");
return 0;
}
我想在用户按下a
后完全打印a
但是只有在我按下回车后才会打印。我需要编写一个更复杂的程序,其中用户在标准输入中键入的某些关键字将调用某些命令(例如:退出/打印/读取字符)但我不想读取整行以执行那些命令。我在C学习大学课程,所以我们不能使用任何非标准的图书馆。
答案 0 :(得分:1)
我想在用户按下
后准确打印
如果不使用第三方库,则无法执行此操作,因为cin文件(如果是终端)仅在用户按Enter后才接收数据。您可以使用curses
的某些分支。
答案 1 :(得分:1)
getchar()并不关心ENTER,它只是处理来自stdin的任何东西。行缓冲往往是OS /终端定义的行为。
许多编译器/平台支持不需要ENTER的非标准getch()(绕过平台缓冲)。
#include <stdio.h>
#include <conio.h> //provides non standard getch() function
using namespace std;
int main()
{
cout << "Password ";
string name;
while(true){
char ch = getch();
if(ch=='\r'){ // found Enter key
cout << endl << "Password is: " << name <<endl;
break;
}
name+=ch;
cout << "*";
}
getch();
return 0;
}