Provided by: manpages-es_1.55-10_all bug

NOMBRE

       scanf,  fscanf,  sscanf,  vscanf,  vsscanf,  vfscanf - conversion de la
       entrada con formato

SINOPSIS

       #include <stdio.h>
       int scanf(const char *format, ...);
       int fscanf(FILE *stream, const char *format, ...);
       int sscanf(const char *str, const char *format, ...);

       #include <stdarg.h>
       int vscanf(const char *format, va_list ap);
       int vsscanf(const char *str, const char *format, va_list ap);
       int vfscanf(FILE *stream, const char *format, va_list ap);

DESCRIPCI'ON

       La familia scanf de funciones escudrina la  entrada  segun  un  formato
       como   se   describe   mas   adelante.   Este  formato  puede  contener
       especificadores de conversi'on; los resultados de tales conversiones, si
       las  hay, se guardan donde apunten los argumentos punteros.  La funcion
       scanf lee la entrada del flujo de entrada estandar stdin, fscanf lee su
       entrada  del puntero a FILE flujo, y sscanf lee su entrada de la cadena
       de caracteres a la que apunte str.

       La funcion vfscanf es analoga  a  vfprintf(3)  y  lee  la  entrada  del
       puntero  a  FILE  flujo  utilizando una lista variable de argumentos de
       punteros (vea stdarg(3)).  La funcion vscanf rastrea una lista variable
       de argumentos de la entrada estandar y la funcion vsscanf la analiza de
       una cadena de caracteres; estas funciones  son  analogas  a  vprintf  y
       vsprintf respectivamente.

       Cada  argumento  puntero  sucesivo  debe corresponder correctamente con
       cada especificador de conversion sucesivo (pero  vea  mas  adelante  lo
       referente  a  `supresion').  Todas  las  conversiones  empiezan  con el
       caracter % (signo de porcentaje). La cadena de caracteres formato puede
       tambien contener otros caracteres. El espacio en blanco (como espacios,
       tabuladores, o saltos de linea) en la cadena de formato  concuerda  con
       cualquier  cantidad  de  espacio  en  blanco, incluyendo ninguna, en la
       entrada. Cualquier otra cosa  concuerda  solamente  consigo  misma.  El
       analisis  acaba  cuando  un  caracter de la entrada no concuerda con un
       caracter del formato. Tambien cuando una conversion no puede realizarse
       (vea mas adelante).

CONVERSIONES

       Despues  del  caracter  % que marca el comienzo de una conversion puede
       haber una serie de caracteres de opci'on, como sigue:

       *      Suprime la asignacion. La conversion que sigue  ocurre  como  si
              nada,  pero  no  se  usa  ningun  puntero;  el  resultado  de la
              conversion simplemente se descarta.

       a      (glibc) Indica que la conversion sera s, el espacio  de  memoria
              necesario  para  la  cadena  se  obtendra mediante malloc() y el
              puntero a ella se asignara a la variable puntero  char,  que  no
              tiene  que haber sido inicializada anteriormente. Esta opcion no
              existe en C ANSI (C89) y tiene un significado diferente en C99.

       a      (C99) Equivalente a f.

       h      Indica que la conversion sera una de dioux o n y que el  puntero
              siguiente lo es a un short int (en vez de a un int).

       l      Indica bien que la conversion sera una de dioux o n y el puntero
              siguiente lo es a un long int (en vez de a un int), o  bien  que
              la  conversion sera una de efg y el puntero siguiente lo es a un
              double (en vez de a  un  float).   Especificar  dos  opciones  l
              equivale a la opcion L.

       L      Indica  que la conversion sera o bien efg y el siguiente puntero
              lo es a un long double o bien que la conversion sera dioux y  el
              siguiente  puntero  lo  sera  a un long long.  (Observe que long
              long no es un tipo de C ANSI.  Un programa que utilice  esto  no
              sera transportable a todas las arquitecturas).

       q      equivalente a L.  Esta opcion no existe en C ANSI.

       Ademas  de  estas  opciones,  puede  haber  una anchura maxima de campo
       opcional, expresado como un entero en base diez, entre el signo % y  la
       conversion.  Si  no  se  da  la  anchura, se supone `infinita' (con una
       excepcion, vea mas abajo); si se da, como mucho se miran los caracteres
       especificados  en ella cuando haya que procesar la conversion. Antes de
       que esta comience, la mayoria descartan  el  espacio  en  blanco;  este
       espacio no cuenta para la anchura de campo.

       Estan disponibles las siguientes conversiones:

       %      Concuerda  con  un  '%'  literal.  Esto  es,  `%%' en el formato
              concuerda con un solo caracter '%' en la  entrada.  No  se  hace
              ninguna conversion, y no hay ninguna asignacion.

       d      Concuerda  con  un  entero  en  base diez con signo opcional; el
              siguiente puntero debe serlo a int.

       D      Equivalente a ld; esto existe solamente por  compatibilidad  con
              una forma antigua.  (Nota: esto ocurre solo en libc4. En libc5 y
              glibc  %D  se  ignora  silenciosamente,  provocando   el   fallo
              mistorioso de programas antiguos.)

       i      Concuerda con un entero con signo opcional; el siguiente puntero
              debe serlo a int.  El entero se lee en base 16  si  empieza  por
              `0x'  o  `0X';  en  base  8  si empieza por `0', y en base 10 si
              empieza  por  otro  digito.  Solo   se   usan   caracteres   que
              correspondan a la base.

       o      Concuerda  con  un  entero octal sin signo; el siguiente puntero
              debe serlo a unsigned int.

       u      Concuerda con un entero en base diez  sin  signo;  el  siguiente
              puntero debe serlo a unsigned int.

       x .    Concuerda  con  un  entero  hexadecimal  sin signo; el siguiente
              puntero debe serlo a unsigned int.

       X      Equivalente a x

       f .    Concuerda con un numero en coma flotante con signo opcional;  el
              siguiente puntero debe serlo a float.

       e      Equivalente a f.

       g      Equivalente a f.

       E      Equivalente a f

       s      Concuerda  con una secuencia de caracteres distintos de blancos;
              el siguiente puntero debe serlo a char, y el vector debe ser  lo
              suficientemente  grande como para aceptar toda la secuencia y el
              caracter 0 o NUL final.  El analisis de  la  cadena  de  entrada
              acaba  en  el  siguiente  espacio  blanco o cuando se llega a la
              anchura de campo maxima, lo que ocurra antes.

       c      Concuerda  con  una  secuencia  de  anchura  caracteres  (1  por
              omision);  el  siguiente puntero debe serlo a char, y debe haber
              suficiente espacio para todos los caracteres  (no  se  anade  el
              caracter NUL terminador).  Se suprime el descarte de los blancos
              iniciales. Para saltar un espacio en blanco inicial,  emplee  un
              espacio explicito en el formato.

       [      Concuerda  con una secuencia no vacia de caracteres del conjunto
              especificado de caracteres aceptados; el siguiente puntero  debe
              serlo  a  char,  y  debe  haber  bastante  sitio  para todos los
              caracteres en la cadena, mas un NUL  terminal.   Se  suprime  el
              descarte usual de los espacios en blanco iniciales. La cadena se
              forma con caracteres de (o no de)  un  conjunto  particular;  el
              conjunto  se define por los caracteres entre el corchete abierto
              [ y un caracter de corchete de cierre ].   El  conjunto  excluye
              esos caracteres si el primero despues del corchete abierto es un
              acento circunflejo ^.  Para incluir un corchete de cierre en  el
              conjunto,  pongalo  el  primero  tras  el  corchete abierto o el
              circunflejo; en cualquiera otra posicion indicara que termina el
              conjunto.   El  caracter  guion - es tambien especial; cuando se
              pone entre dos otros caracteres, anade todos los de  enmedio  al
              conjunto. Para incluir un guion, pongalo como el ultimo caracter
              antes del corchete de  cierre  final.  Por  ejemplo,  `[^]0-9-]'
              significa  el  conjunto  de  `todos  los  caracteres  excepto el
              corchete de cierre, los digitos del cero al nueve, y el  guion'.
              La  cadena  acaba  con la aparicion de un caracter que no es (o,
              con un circunflejo, que si es) del conjunto, o cuando se llega a
              la anchura opcional especificada.

       p      Concuerda con un valor de tipo puntero (como se imprima por `%p'
              en printf(3)); el siguiente puntero debe serlo a void.

       n      No se espera concordar con nada;  en  su  lugar,  se  guarda  el
              numero  de  caracteres  consumidos  o  leidos  hasta ahora de la
              entrada en donde apunte el siguiente puntero, que debe  serlo  a
              int.   Esto no es una conversion, aunque pueda suprimirse con la
              opcion *.  El estandar de C dice: `La ejecucion de una directriz
              %n  no incrementa el numero de asignaciones devuelto al final de
              la  ejecucion',  pero  el   Anadido   de   Correcciones   parece
              contradecir  esto.  Probablemente  es  lo mejor no hacer ninguna
              suposicion sobre el efecto de las conversiones %n en el valor de
              retorno de la funcion.

VALOR DEVUELTO

       Estas  funciones  devuelven  el  numero  de  elementos  de  la  entrada
       asignados, que pueden ser menores que los formatos  suministrados  para
       conversion,  o  incluso  cero,  en el caso de un fallo de concordancia.
       Cero indica que, mientras habia caracteres disponibles en  la  entrada,
       no ocurrio ninguna asignacion; normalmente esto es debido a un caracter
       de entrada invalido, como un caracter alfabetico  para  una  conversion
       `%d'.  Se  devuelve el valor EOF si ha habido un fallo de entrada antes
       de ninguna conversion, como cuando se llega al final de la entrada.  Si
       ocurre un error de lectura o se llega al final de la entrada despues de
       que se haya hecho alguna conversion al menos, se devuelve el numero  de
       conversiones completadas hasta ese punto con exito.

V'EASE TAMBI'EN

       strtol(3), strtoul(3), strtod(3), getc(3), printf(3)

CONFORME A

       Las  funciones  fscanf,  scanf, y sscanf son conformes al estandar ANSI
       X3.159-1989 (``C ANSI'').

       La opcion q es la notacion de BSD 4.4 para el tipo long long,  mientras
       que  ll  o el empleo de L en conversiones de enteros, es la notacion de
       GNU.

       La version de Linux de estas funciones se basa en la  biblioteca  libio
       de GNU.  Eche un vistazo a la documentacion en formato info de GNU libc
       (glibc-1.08) para una descripcion mas concisa.

FALLOS

       Todas las funciones son conformes completamente con  el  estandar  ANSI
       X3.159-1989,  pero proporcionan las opciones adicionales q y a asi como
       un comportamiento adicional de las opciones L y l.  Lo ultimo puede ser
       considerado  como  un fallo, puesto que cambia el comportamiento de las
       opciones definidas en el estandar ANSI X3.159-1989.

       Algunas combinaciones de  opciones  definidas  por  C  ANSI  no  tienen
       sentido  en C ANSI (p.ej., %Ld).  Aunque pueden tener un comportamiento
       bien definido en Linux,  esto  no  tiene  por  que  ser  asi  en  otras
       arquitecturas.  Por  lo tanto es normalmente mejor usar opciones que no
       son definidas por C ANSI en absoluto, i.e., usar  q  en  vez  de  L  en
       combinacion con conversiones diouxX o ll.

       El  empleo  de  q  no  es  el  mismo  que  en BSD 4.4, puesto que puede
       utilizarse en conversiones de coma flotante de forma equivalente a L.