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

