Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

239
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda