Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: g0rg3d3l4s3lv4 en 15 Marzo 2013, 01:28 am



Título: Pregunta de C scanf
Publicado por: g0rg3d3l4s3lv4 en 15 Marzo 2013, 01:28 am
En un programa de  veo la siguiente instruccion
scanf("%c %*c",&r)

para que sirve %*c

gracias


Título: Re: Pregunta de C scanf
Publicado por: 85 en 15 Marzo 2013, 02:53 am
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


Título: Re: Pregunta de C scanf
Publicado por: rir3760 en 15 Marzo 2013, 04:18 am
para que sirve %*c
El asterisco indica que el valor se lee pero no se almacena. Siguiendo tu ejemplo:
Código
  1. 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):
Código
  1. char linea[101]; /* +1 para el '\0' */
  2.  
  3. /* ... */
  4.  
  5. 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


Título: Re: Pregunta de C scanf
Publicado por: g0rg3d3l4s3lv4 en 15 Marzo 2013, 04:21 am
Muchas gracias a ambos, es exactamente la información que buscaba.