C/Visual C - Pequeña duda teórica.

   
Vista:

Pequeña duda teórica.

Publicado por Daniel (1 intervención) el 05/10/2014 16:45:24
Hola a todos, estoy mirando un libro de programación en C y me encuentro con lo siguiente:

1
2
3
4
5
6
7
8
char c;
 
printf("\n Introduce un carácter: ");
scanf("%c", &c);
printf("\n El carácter introducido es: %c", c);
printf("\n Introduce otro carácter: ");
scanf(%*c%c", &c);
printf("\n El carácter introducido es: %c", c);

El programa al compilarlo y ejecutarlo muestra el carácter introducido por teclado como no puede ser de otra forma y además provoca un salto de línea antes de mostrar el último resultado, supongo que será debido a %*c, que tomará el salto de línea del primer scanf. Sin embargo no sé como funciona, no sé qué significa %*c. ¿Qúe es lo que hace realmente?

Saludos y 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
Imágen de perfil de JuanC

Pequeña duda teórica.

Publicado por JuanC juanc2942@gmail.com (35 intervenciones) el 05/10/2014 18:00:03
el salto de línea de debe al \n
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

Pequeña duda teórica.

Publicado por Daniel (1 intervención) el 05/10/2014 19:08:57
Gracias por la respuesta.

Si sé que se debe al \n introducido en la sentencia anterior que queda en e buffer, pero no entiendo el significado de *%c, como interpreta el ordenador esa sentencia.

Saludos y 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

Pequeña duda teórica.

Publicado por Tom (481 intervenciones) el 05/10/2014 19:26:17
Copiado y pegado del man de scanf (hay que leer):

"Each conversion specification is introduced by the character '%' [XSI] [Option Start] or the character sequence "%n$", [Option End] after which the following appear in sequence:

An optional assignment-suppressing character '*'.
...
"
Así que %*c significa "ignorar cualquier carácter". Y %*c%c viene a ser ignorar cualquier carácter y asignar el último (el \n).
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

Pequeña duda teórica.

Publicado por Daniel (1 intervención) el 05/10/2014 19:56:22
Gracias Tom.

Perdón por no haber leido antes la ayuda de scanf, pero es que no sabía que existía "man scanf", había buscado previamente en la web y no encontré lo que buscaba.

Saludos.
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