en C, encontre esta solución para hacerlo con scanf
Código:
pero sucede que al hacerlo así la primera vez que se ejecuta esto dentro de un bucle no me recoge la primera letra. Las siguientes veces si lo hacescanf("%*c%[^\n]",variable);
Talvez no estoy declarando correctamente al char * entrada, aca abajo esta el código.
Código:
Ejemplo de lo que me devuelve esto#include <stdio.h> #include <string.h> #include <stdlib.h> #include "include/variables_entorno.h" int main(int argc, char* argv[]) { //Declaración de variables char * entrada=(char *)malloc(sizeof(char)); struct var_usuario usuarioi; //Usuario Con el que arranca la instancia char u='$'; // //Recogemos los datos del usuario usuarioi=info_usuario(); do { printf(" %s:%c ",usuarioi.usuario,u); fflush(stdout); scanf("%*c%[^\n]",entrada); printf("\nEntrada %s\n",entrada); //system(entrada); }while (strcmp(entrada,"salir")); //Mensaje para avisar que salio correctamente //*************revisar que salga bien******** if(strcmp(entrada,"salir")==0){ printf("\n\n¡Adios!!!!!"); } return 0; }
Código:
Como ven la primera vez que ejecuto esto me devuelve sdf cuando ingrese asdfjdc:$ asdf Entrada sdf jdc:$ asdf Entrada asdf jdc:$ salir Entrada salir
Vi por ahi para que podia usar fgets, pero lei que era mas inseguro, que es preferible usar fscan