在C中标准输出中的1个字符后准确打印一些东西

时间:2016-12-21 07:50:43

标签: c input output

我在C中有一个非常简单的程序:

#include <stdio.h>

int main() {
  char c;
  int i;

  if( (c = getchar()) == 'a')
    printf("pressed a");

  return 0;
}

我想在用户按下a后完全打印a但是只有在我按下回车后才会打印。我需要编写一个更复杂的程序,其中用户在标准输入中键入的某些关键字将调用某些命令(例如:退出/打印/读取字符)但我不想读取整行以执行那些命令。我在C学习大学课程,所以我们不能使用任何非标准的图书馆。

2 个答案:

答案 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;
}