Pregunta de C scanf

Iniciado por g0rg3d3l4s3lv4, 15 Marzo 2013, 01:28 AM

0 Miembros y 1 Visitante están viendo este tema.

g0rg3d3l4s3lv4

En un programa de  veo la siguiente instruccion
scanf("%c %*c",&r)

para que sirve %*c

gracias

85

Esperá que alguno del foro se moleste en googlearlo y te diga, mientras tanto fijate esto:
http://www.cplusplus.com/reference/cstdio/printf/
http://www.cplusplus.com/reference/cstdio/scanf/

PS: Usa la opción de 'traducir' de tu navegador Chrome.

88
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

rir3760

Cita de: g0rg3d3l4s3lv4 en 15 Marzo 2013, 01:28 AMpara que sirve %*c
El asterisco indica que el valor se lee pero no se almacena. Siguiendo tu ejemplo:
scanf("%c %*c",&r);
La función scanf con:

1) "%c" lee un carácter y lo almacena en la variable "r".
2) " " descarta todo el espacio blanco (espacio, tabulador, avance de linea, etc.).
3) "%*c" lee un carácter, este se descarta.

Es útil en ciertos escenarios, por ejemplo para leer una linea de un máximo de 100 caracteres pero sin incluir el avance de linea (de forma similar a la función gets):
char linea[101]; /* +1 para el '\0' */

/* ... */

scanf("%100[^\n]%*c", linea);

Con "%100[^\n]" se lee un máximo de 100 caracteres, la condición aquí es ser distintos de '\n' (el avance de linea), a continuación este se lee y descarta con "%*c".

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

g0rg3d3l4s3lv4

Muchas gracias a ambos, es exactamente la información que buscaba.