C/Visual C - scanf("%[^\n]", nomb);

 
Vista:

scanf("%[^\n]", nomb);

Publicado por Jonas (2 intervenciones) el 04/07/2006 08:59:35
Tengo lo siguiente:

#include <stdio.h>
#include <conio.h>
int i;
char nomb[65], resp = 's';
main()
{
while(toupper(resp) != 'N')
{
.
.
.
scanf("%[^\n]", nomb);
.
.
.
scanf("%f", ¬a);
.
.
.
gotoxy(31, 23);
printf("Desea Continuar: ");
resp = getche();
}
}

El problema es que estoy usando scanf("%[^\n]", nomb) para leer un nombre que puede contener espacios en blanco, luego de introducir y porcesar el resto de la información pregunto al usuario si desea continuar y leo la restpuesta utilizando getche(). Cuando digo que sí ('s') y se repite el ciclo while no realiza la lectura scanf("%[^\n]", nomb), sino que se la salta como si nada y deja la cadena vacia. Probé usando scanf("%[^\n]\n", nomb), pero despues de leer el nombre se detinene y no continua con la siguiente lectura.
Si hay alquien que entienda lo que me esta pasando y cual es la solución les agradecería me la de ya que he estado probando de muchas manera y no se que más hacer...Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:scanf(

Publicado por Ion (7 intervenciones) el 04/07/2006 11:36:46
Hola:

Tu problema está en que no estás limpiando el buffer de lectura utilizado por el "scanf".

Este tipo de problemas se evitan limpiando el buffer antes de cada lectura, con _flushall(). En tu caso bastaría con llamarlo antes del 1º scanf:

_flushall();
scanf("%[^\n]", nomb);
scanf("%f", ¬a);
printf("\nDesea Continuar: ");
resp = getche();

Otra cosa, para leer una cadena con espacios, también puedes usar gets():

gets(nomb);
scanf("%f", ¬a);
printf("\nDesea Continuar: ");
resp = getche();

Espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:scanf(

Publicado por Jonas (2 intervenciones) el 04/07/2006 15:49:12
Gracias colega... ha sido para mi de gran utilidad tu ayuda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar