C ++ vfscanf () - Biblioteca estándar de C ++

La función vfscanf () en C ++ se usa para leer los datos de un flujo de archivos.

La función vfscanf () se define en el archivo de encabezado.

prototipo vfscanf ()

 int vfscanf (FILE * stream, const char * formato, va_list vlist);

La función vfscanf () lee los datos del flujo de archivos y almacena los valores en las ubicaciones respectivas según lo definido por vlist.

Parámetros de vfscanf ()

  • flujo: flujo de archivo de entrada para leer los datos.
  • formato: puntero a una cadena de caracteres terminada en nulo que especifica cómo leer la entrada. Consiste en especificadores de formato que comienzan con%.
  • vlist: lista de argumentos de variable donde se almacenarán los valores
    La cadena de formato tiene las siguientes partes:
    • Caracteres que no son espacios en blanco, excepto%, cada uno de los cuales consume un carácter idéntico del flujo de entrada. Puede hacer que la función falle si el siguiente carácter de la secuencia no se compara igual.
    • Carácter de espacio en blanco: todos los caracteres de espacio en blanco consecutivos se tratan como un solo carácter de espacio en blanco. Además, ' n', ' t' y '' se consideran iguales.
    • Especificación de conversión: Sigue el siguiente formato:
      • Carácter% inicial que especifica el comienzo
      • Un carácter opcional * llamado supresor de asignaciones. Si este carácter está presente, vfscanf () no asigna el resultado a ningún argumento receptor.
      • Un número entero positivo opcional que especifica el ancho máximo de campo. Especifica el número máximo de caracteres que vfscanf () puede consumir al realizar la conversión especificada por la especificación de conversión actual.
      • Un modificador de longitud opcional que especifica el tamaño del argumento de recepción.
      • Un especificador de formato de conversión.
    Especificadores de formato
    Especificador de formato Descripción
    % Coincide con el% literal
    C Coincide con un solo carácter o varios caracteres. Si se define el ancho, coincide exactamente con los caracteres de ancho.
    s Coincide con caracteres consecutivos sin espacios en blanco. Si se define el ancho, coincide exactamente con los caracteres de ancho o hasta que se encuentre el primer espacio en blanco.
    (conjunto) Coincide con una secuencia de caracteres no vacía del conjunto de caracteres dado. Si está presente al principio del conjunto, entonces todos los caracteres que no están en el conjunto coinciden.
    re Coincide con un entero decimal.
    yo Coincide con un número entero.
    o Coincide con un entero octal sin signo.
    X o x Coincide con un entero hexadecimal sin signo.
    tu Coincide con un entero decimal sin signo.
    A o a, E o e, F o f, G o g Coincide con un número de punto flotante.
    norte Devuelve el número de caracteres leídos hasta ahora.
    pags Coincide con una secuencia de caracteres definida por la implementación que define un puntero.

    Entonces, el formato general del especificador de formato es:
     % (*) (ancho) (largo) especificador
  • vlist: una lista de argumentos para recibir las entradas.

vfscanf () Valor de retorno

  • Si tiene éxito, la función vfscanf () devuelve el número de argumentos leídos correctamente.
  • Si falla, se devuelve EOF.

Ejemplo: ¿Cómo funciona la función vfscanf ()?

 #include #include void read(FILE* fp, const char * format,… ) ( va_list args; va_start (args, format); vfscanf (fp, format, args); va_end (args); ) int main () ( char myFriends(5)(20) = ("Robert", "Syd", "Brian", "Eddie", "Ray"); FILE *fp = fopen("example.txt","w+"); char name(20); for (int i=0; i<5; i++) fprintf(fp, "%s ", myFriends(i)); rewind(fp); printf("Here are the list of my friends"); for (int i=0; i<5; i++) ( read(fp, "%s ", &name); printf("%s", name); ) fclose(fp); return 0; )

Cuando ejecute el programa, una posible salida será:

 Aquí está la lista de mis amigos Robert Syd Brian Eddie Ray

Articulos interesantes...