Hola, tengo una maldito problema quiero recoger una frase con espacios pero
en C, encontre esta solución para hacerlo con scanf
Código:
scanf("%*c%[^\n]",variable);
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 hace
Talvez no estoy declarando correctamente al char * entrada, aca abajo esta el código.
Código:
#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;
}
Ejemplo de lo que me devuelve esto
Código:
jdc:$ asdf
Entrada sdf
jdc:$ asdf
Entrada asdf
jdc:$ salir
Entrada salir
Como ven la primera vez que ejecuto esto me devuelve
sdf cuando ingrese
asdf
Vi por ahi para que podia usar fgets, pero lei que era mas inseguro, que es preferible usar fscan