Instruccion sscanf [C]

Iniciado por oblivionxor, 26 Febrero 2013, 18:57 PM

0 Miembros y 2 Visitantes están viendo este tema.

oblivionxor

Que tal, tengo una duda, estaba viendo un programa y tiene una comparacion muy rara (bueno para mi que soy nuevo en esto) miren


if (sscanf(q,"R%dC%d", &r,&c)==2)


por que compara la instruccion sscanf con un 2?

Y en esta otra:


scanf("%d\n", &n);


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

naderST

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.

oblivionxor

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?

naderST

Sí se ignoran, pero lo que leas debe cumplir con ese formato.

oblivionxor

Con cual formato? D: con el del especificador de conversion? o cual?

naderST

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.

oblivionxor

Oh! entendido a la perfeccion naderST muchas gracias por tu ayuda!