Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: oblivionxor en 26 Febrero 2013, 18:57 pm



Título: Instruccion sscanf [C]
Publicado por: oblivionxor en 26 Febrero 2013, 18:57 pm
Que tal, tengo una duda, estaba viendo un programa y tiene una comparacion muy rara (bueno para mi que soy nuevo en esto) miren

Código
  1. if (sscanf(q,"R%dC%d", &r,&c)==2)
  2.  

por que compara la instruccion sscanf con un 2?

Y en esta otra:

Código
  1. scanf("%d\n", &n);
  2.  

Por que pone un salto de linea despues del especificador de conversion?


Título: Re: Instruccion sscanf [C]
Publicado por: naderST en 26 Febrero 2013, 19:12 pm
Citar
On success, the function returns the number of items of the argument list successfully filled.

Compara con dos validando que ambos elementos se hayan leído correctamente.

El salto de línea lo utiliza para ignorar para descartar el {enter} que queda en el flujo de entrada al momento de introducir algún dato.


Título: Re: Instruccion sscanf [C]
Publicado por: oblivionxor en 26 Febrero 2013, 19:14 pm
Oh muchas gracias! Ahora lo entiendo, entonces si quiero hacer que se ignoren caracteres en una lectura, los pongo en el scanf y ya se ignoran?


Título: Re: Instruccion sscanf [C]
Publicado por: naderST en 26 Febrero 2013, 19:19 pm
Sí se ignoran, pero lo que leas debe cumplir con ese formato.


Título: Re: Instruccion sscanf [C]
Publicado por: oblivionxor en 26 Febrero 2013, 19:26 pm
Con cual formato? D: con el del especificador de conversion? o cual?


Título: Re: Instruccion sscanf [C]
Publicado por: naderST en 26 Febrero 2013, 19:32 pm
A ver me explico un poco mejor, vamos a tomar de ejemplo el formato que tienes en tu sscaf():

scanf("R%dC%d", &r, &c)

Ahí se ignora la R y la C extrayendo únicamente el valor número de cada una, es decir se espera una cadena como la siguiente: "R10C20" la cadena debe cumplir con el formato especificado en el primer argumento de scanf(). No es lo mismo que le pases: "C10R20" ya que no cumplirá con el formato y scanf te devolverá 0 ya que no leyó ningún elemento.

Lo que te quería decir es que solo ignora los caracteres que coloques si tu cadena cumple con el formato.


Título: Re: Instruccion sscanf [C]
Publicado por: oblivionxor en 26 Febrero 2013, 20:36 pm
Oh! entendido a la perfeccion naderST muchas gracias por tu ayuda!