C-键入字符时从stdin读取

如何在输入80个字符的缓冲区时填充它们,或者直到按下回车键或缓冲区已满为止,以先到者为准.

我研究了很多不同的方法,但是必须按下Enter键,然后输入char *会在80处截断.

谢谢.

最佳答案
如果您确实想要字符“输入时”,则不能使用C io.您必须以Unix方式进行操作. (或Windows方式)

#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int main() {
  char r[81];
  int i;
  struct termios old,new;
  char c;
  tcgetattr(0,&old);
  new = old;
  new.c_lflag&=~ICANON;
  tcsetattr(0,TCSANOW,&new);
  i = 0;
  while (read(0,&c,1) && c!='\n' && i < 80) r[i++] = c;
  r[i] = 0;
  tcsetattr(0,TCSANOW,&old);
  printf("Entered <%s>\n",r);
  return 0;
}

转载注明原文:C-键入字符时从stdin读取 - 代码日志