C/Visual C - estudiante

 
Vista:
sin imagen de perfil

estudiante

Publicado por rekordoba (2 intervenciones) el 05/05/2008 02:18:32
Buenas, soy principiante en C y tengo un problema q me ocurre solo en este leguanje.
La duda es porque este bucle...

#include <stdio.h>
main()
{

char aux = 'a';
while (aux != 's')
{
printf("Salir: ");
scanf("%c", &aux);
}
}

me da esta salida
1º vuelta:
Salir:
2º vuelta en adelante...
Salir: Salir:

ejecuta el printf dos veces a partir de la segunda vuelta
Agradezco a quien se interese en este problemilla.
SALUDOS A TODOS.........
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:estudiante

Publicado por Mariano (8 intervenciones) el 05/05/2008 06:38:07
Hola mira, el problema que vos apretas la letra y luego enter, entonces en realidad son 2 veces que entra al ciclo, por eso es que dos veces imprimi salir. Para solucionar eso, lo unico que podes hacer es dentro del while poner un if y preguntar si aux != 10 {valor ascii de ENTER}, y en ese caso hacer printf ("Salir"), sino NO.

Ademas, como recomendacion, para leer un caracter, te recomiendo la funcion getchar();

El codigo seria asi:

#include <stdio.h>
int main()
{
char aux;
while ((aux=getchar()) != 's')
{
if (aux!=10)
printf("Salir: ");
}
return 0;
}

Saludos!!

Mariano
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

Gracias Mariano

Publicado por rekordoba (1 intervención) el 05/05/2008 14:15:36
Te agradesco mucho la respuesta Mariano. Hace tiempo que conozco esta pagina, pero no conocia las bondades de sus foros, simplemente sorprendente.
Espero que nuestra relacion dure mucho tiempo y sobre todo espero ser util en algun momento con vosotros.
Muchas gracias.
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