Foros del Web » Programación para mayores de 30 ;) » Programación General »

problema con scanf y espacios en blanco en C

Estas en el tema de problema con scanf y espacios en blanco en C en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/04/2008, 09:56
 
Fecha de Ingreso: julio-2006
Mensajes: 6
Antigüedad: 15 años, 6 meses
Puntos: 0
problema con scanf y espacios en blanco en C

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

Última edición por ronin; 11/04/2008 a las 10:54
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:08.