Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

234
Visualizações
¿Cómo leer la entrada del usuario sin presionar ENTER?

Estoy escribiendo un código donde necesito obtener información sin que el usuario presione ENTER. El código es básicamente que necesito obtener 4 números del 1 al 6 sin que el usuario presione ENTER todo en una línea.

Intenté hacerlo con getchar() , pero no funciona.

¿Cómo puedo hacer eso?

Aquí está esa parte del código:

 int p1 = 0; int p2 = 0; int p3 = 0; int p4 = 0; p1 = getchar() - 48; p2 = getchar() - 48; p3 = getchar() - 48; p4 = getchar() - 48;
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Esta es una pregunta frecuente de C: 12.5 ¿Cómo puedo leer un carácter a la vez, sin esperar la tecla RETORNO ?

Citar:

Según el sistema operativo que esté utilizando y las bibliotecas que tenga disponibles, es posible que pueda utilizar una (¡o más!) de las siguientes técnicas:

  • Si puede usar la biblioteca curses , puede llamar a cbreak [nota al pie] (y tal vez a noecho), después de lo cual las llamadas a getch devolverán caracteres inmediatamente.
  • Si todo lo que intenta hacer es leer una contraseña corta sin eco, puede usar una función llamada getpass, si está disponible. (Otra posibilidad de ocultar contraseñas escritas es seleccionar caracteres negros sobre un fondo negro).
  • En las versiones clásicas de Unix, use ioctl y las solicitudes TIOCGETP y TIOCSETP (o TIOCSETN) en el descriptor de archivo 0 para manipular la estructura sgttyb, definida en <sgtty.h> y documentada en tty(4). En el campo sg_flags, establezca el bit CBREAK (o RAW) y tal vez borre el bit ECHO.
  • En System V Unix, use ioctl y las solicitudes TCGETAW y TCSETAW en el descriptor de archivo 0 para manipular la estructura termio, definida en <termio.h>. En el campo c_lflag, borre los bits ICANON (y quizás ECHO). Además, establezca c_cc[VMIN] en 1 y c_cc[VTIME] en 0.
  • En cualquier sistema operativo (Unix o de otro tipo) que ofrezca compatibilidad con POSIX, use las llamadas tcgetattr y tcsetattr en el descriptor de archivo 0 para manipular la estructura termios, definida en <termios.h>. En el campo c_lflag, borre los bits ICANON (y quizás ECHO). Además, establezca c_cc[VMIN] en 1 y c_cc[VTIME] en 0.
  • En un apuro, en Unix, use system (consulte la pregunta 19.27 ) para invocar el comando stty para configurar los modos de controlador de terminal (como en los tres elementos anteriores).
  • En MS-DOS, use getch o getche, o las interrupciones de BIOS correspondientes.
  • En VMS, pruebe las rutinas o curses de administración de pantalla (SMG$), o emita $QIO de bajo nivel con el código de función IO$_READVBLK (y quizás IO$M_NOECHO y otros) para solicitar un carácter a la vez. (También es posible configurar los modos carácter a la vez o "paso a través" en el controlador de la terminal VMS).
  • En otros sistemas operativos, estás solo.
over 4 years ago · Santiago Trujillo Relatório

0

No hay una función estándar para esto.

Hay algunas soluciones personalizadas, por ejemplo, https://www.cs.uleth.ca/~holzmann/C/system/ttyraw.c Pero su kilometraje puede variar.

Sin embargo, si este tipo de uso dinámico de la terminal es fundamental para su programa, recomendaría usar ncurses o algo similar.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda