SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: isma3l en Domingo 3 de Octubre de 2010, 22:52
-
Hola no soy de pedir ayuda en los foros pues prefiero encontrar yo mismo la rpta, solo en excepciones comoesta lo hago. :huh:
Estaba repasando C para un trabajo pero algo anda mal.
El codigo que puse no es el programa que hice, sino uno super simple para que me entiendan rapidamente y no lean mi codigo secreto ^_^ :
int main(){
char car='S';
while( toupper(car) == 'S' ){
char nombre[10];
printf("ingresa un nombre: ");
scanf("%s",nombre);
printf("el nombre es: %sn",nombre);
printf("quieres escribir otro nombre");
scanf("%c",&car);
}
}
El problema es que luego que muestra: "quieres escribir otro nombre" el programa finaliza y no me da chance de escrbir el caracter,
pero si repito el scanf como:
scanf("%c",&car);scanf("%c",&car);
Ahi si me deja escribir, no entiendo porquepasa, si saben me dirian porque...
Gracias por leer...
:beer:
-
oye recuerda que 'n' (es un caracter) también vale por lo tanto cuando pones arribauna cadena y das enter entonces estas dando un caracter de nueva línea por lo tanto en el siguiente scanf("%c") te toma como si hubieras escrito 'n' un caracter y por eso no te sale en pantalla que ponga el caracter por lo tanto tiene que usar la función fflush para liberar el buffer.
Un ejemplo que me encontre en internet:
#include <stdio.h>
int main()
{
char a, b, c;
printf( "Introduzca primer caracter: " );
scanf( "%c", &a );
printf( "Introduzca segundo caracter: " );
fflush( stdin );
scanf( "%c", &b );
printf( "Introduzca tercer caracter: " );
fflush( stdin );
scanf( "%c", &c );
printf( "Los valores son: %c, %c, %c ", a, b, c );
return 0;
}
-
Gracias...... no sabes las ganas que tenia de :hitcomp:
Y eso solo pasa con scanf o tambien pasa lo mismo para gets getchar.
Lo probare...
GRacias de nuevo... :comp: