Cita de: francoyo1998 en 30 Octubre 2014, 22:04 PMy ese while al final y simple??? porque no tiene nada adentro?Porque en C es obligatorio indicar el cuerpo de un bucle.
En el caso que comentas:
Código (c) [Seleccionar]
{
int ch;
while ((ch = getchar()) != EOF && ch != '\n')
; /* sentencia nula ==> ninguna operacion */
}
La operación necesaria (descarte del resto de la linea) se realiza en la condición del bucle, no hay nada mas que hacer pero las reglas del lenguaje imponen indicar el cuerpo si o si. Por ello utilizamos una sentencia nula (nada) la cual se indica con el punto y coma inmediatamente después de la condición.
----
Cita de: leosansan en 31 Octubre 2014, 04:39 AMToda la explicación es correcta salvo un detalle en esa llamada a función: al utilizar "%c" se debe indicar mediante un puntero la variable donde se almacenara el carácter, si se desea simplemente descartar al susodicho se debe utilizar "%*c".Código (c) [Seleccionar]scanf("%[^\n]%c" , temp);
Espero no haberte liado más, sino todo lo contrario y no haber metido la pata con la explicación
Un saludo