Skip to main content

¿Qué Devuelve La Función Fscanf?

  • Diego Santamaría Iñiguez
  • Software

fscanf es una funci n del lenguaje de programaci n C que se utiliza para Leer datos de un archivo de texto a trav s de una entrada formateada. Le permite Leer diferentes tipos de datos de un archivo utilizando un formato dado.

La funci n fscanf devuelve el n mero de datos le dos correctamente. Si Lee correctamente los datos, se devuelve el n mero de elementos le dos correctamente. Si se produce un error al Leer, la funci n devuelve EOF (-1).

La funci n fscanf es muy til para trabajar con archivos de texto y le permite Leer los datos l nea por l nea, proces ndolos seg n sea necesario. Le permite utilizar diferentes formatos como enteros, decimales, caracteres, cadenas y otros tipos de datos.

", num1, num2);

  1. fclose(file);
  2. return 0;
  3. }
  4. En este ejemplo, la funci n fscanf Lee dos enteros de un archivo llamado input.txt y los almacena en las variables num1 y num2. A continuaci n, se muestran en la pantalla mediante la funci n printf. Si los n meros est n en el archivo input.los txt tienen el formato que corresponde a la cadena "%D %D", entonces la funci n fscanf los considera correctamente y devolver un valor de 2.
  5. Sintaxis y descripci n
  6. Valor de retorno
  7. Ejemplo de uso
  8. Los principales argumentos

Ejemplo de trabajo con un archivo

Recomendaciones de uso

Cu l es la firma de la funci n fscanf?

Qu datos puede devolver la funci n fscanf?

Qu sucede si la funci n fscanf no puede Leer la entrada?

  • Qu tipos de datos se pueden Leer con la funci n fscanf?
  • Funci n
  • es una de las funciones est ndar del lenguaje de programaci n C y se utiliza para Leer datos de un archivo por formato. Devuelve el n mero de elementos de datos le dos correctamente.

Donde:

stream - puntero al archivo abierto desde el que se leen los datos;
format - cadena de formato que especifica el formato de datos esperado;
arg1, arg2, ... - argumentos en los que se escribir n los datos le dos de acuerdo con el formato.
Funci n fscanf
Lee los datos del archivo seg n el formato especificado en la cadena de formato. La cadena de formato consiste en especificadores de conversi n que definen los tipos de datos esperados. Los especificadores de conversi n comienzan con un car cter %
y pueden ser los siguientes:Especificador
Descripci n%d

N mero de coma flotante (float)

%c

Un car cter (char)

%u

Entero sin signo (unsigned int)

%lf

N mero de coma flotante de doble precisi n (double)

Funci n

fscanf

Lee los datos del archivo y los almacena en los argumentos especificados despu s de la cadena de formato. El n mero de argumentos debe coincidir con el n mero de especificadores de conversi n en la cadena de formato; de lo contrario, pueden producirse resultados impredecibles. La funci n devuelve el n mero de elementos de datos le dos correctamente, que puede ser menor que el n mero de especificadores de conversi n especificados.

Ejemplo de uso de la funci n

fscanf

:

#include

int main() {

FILE *file = fopen("data.txt", "r");

}

return 0;

}

En este ejemplo, el archivo "data.txt " contiene tres valores: un entero, un n mero flotante y una cadena de caracteres. Funci n

fscanf

Lee estos valores y los almacena en variables

x

,

y

e

s

respectivamente.

Valor de retorno

La funci n fscanf devuelve el n mero de valores le dos y asignados correctamente. En caso de que ning n valor se haya le do correctamente, la funci n devolver 0.

Si se produce un error de lectura, el valor de retorno ser -1.

El valor de retorno se puede utilizar para comprobar si los datos de un archivo se leen correctamente.

Por ejemplo, si se espera un entero en un archivo y la funci n fscanf devuelve 1, significa que el n mero se ley correctamente. Si la funci n devolvi 0 o -1, se produjo un error al Leer el n mero.

Ejemplo de uso

Por ejemplo, considere la funci n fscanf, que Lee datos de un archivo. Supongamos que tenemos un archivo " example.txt " con el siguiente contenido:

Nombre: Alexei

Apellido: Ivanov

Edad: 30

Queremos extraer el nombre, el apellido y la edad de este archivo. Aqu se explica c mo hacerlo con la funci n fscanf:

#include

int main() {

FILE *file;

char name[100], surname[100];

int age;

file = fopen("example.txt", "r");

fscanf (file, "Nombre: %s

", name);

fscanf (file, "Apellido: %s

", surname);

fscanf (file, "Edad: %d

", &age);

fclose(file);

printf ("Nombre: %s

", name);

printf ("Apellido: %s

", surname);

printf ("Edad: %d

  1. ", age);

  2. return 0;

  3. }

El resultado de la ejecuci n del programa ser el siguiente:

Nombre: Alexei

Apellido: Ivanov

Edad: 30

  • Como puede ver en el ejemplo, la funci n fscanf Lee los datos de un archivo utilizando un formato dado. En este caso, especificamos las funciones fscanf, qu datos esperamos contar, y en qu variables queremos escribir esos datos. Despu s de ejecutar la funci n fscanf, el contenido de las variables name, surname y age coincidir con los datos del archivo.
  • Los principales argumentos
  • La funci n fscanf es una funci n de la biblioteca est ndar C que se utiliza para Leer datos de un archivo u otra secuencia con un formato dado.

Toma los siguientes argumentos:

stream: es un puntero a una estructura de FILE que apunta a un archivo o secuencia desde la que se deben Leer los datos.

format: esta es una l nea que describe el formato de los datos que se deben Leer del archivo. El formato consiste en especificadores de conversi n y otros s mbolos que le permiten especificar el tipo de datos y su ubicaci n en el flujo de entrada.

arg1, arg2, : estos son los argumentos en los que se escribir n los valores le dos del archivo de acuerdo con el formato especificado. El n mero de argumentos debe ser igual al n mero de especificadores de conversi n en el formato.

La funci n fscanf devuelve el n mero de elementos de datos le dos correctamente. Puede ser menor que el n mero de argumentos si se produce un error o si se llega al final del archivo.

Ejemplo de trabajo con un archivo

Para trabajar con archivos en el lenguaje de programaci n C, se utiliza la biblioteca est ndar stdio.h. con la funci n fopen, puede abrir un archivo para Leer o escribir. La funci n fopen toma dos par metros: nombre de archivo y modo de apertura.

El modo de apertura puede ser el siguiente:

"r - abrir archivo para Leer

"w" - abrir archivo para escribir

"a" - abrir el archivo para agregar informaci n al final

Despu s de abrir el archivo, la funci n fopen devuelve un puntero a una estructura de tipo FILE. A continuaci n, puede utilizar este puntero para Leer o escribir datos.

Considere un ejemplo de trabajar con un archivo que contiene una lista de nombres:

#include

int main() {

FILE *file = fopen("names.txt", "r");

if (file == NULL) {

printf ("Error al abrir el archivo

");

return 1;

}

char name[50];

while (fscanf(file, "%s", name) == 1) {

printf ("Nombre: %s

", name);

}

fclose(file);

return 0;

}

  • En este ejemplo, se abre un archivo llamado " names.txt " para Leer. Si el archivo no se puede abrir, aparece un mensaje de error. A continuaci n, se utiliza un bucle en el que la funci n fscanf Lee las l neas del archivo. La lectura contin a hasta que la funci n fscanf Lee con xito una l nea del archivo. Luego, la cadena le da se imprime en la pantalla con la funci n printf. Finalmente, una vez que se completa la lectura del archivo, se cierra con la funci n fclose.
  • Conclusi n
  • Este art culo proporciona un ejemplo de c mo trabajar con un archivo en el lenguaje de programaci n C utilizando la funci n fscanf. Esta funci n le permite Leer l neas de un archivo y usarlas en el programa. Abrir un archivo, leerlo y cerrarlo son los pasos b sicos cuando se trabaja con archivos en C.
  • Errores y excepciones
  • Devuelve la funci n fscanf un valor ligeramente diferente dependiendo de si hubo un error al Leer los datos del archivo o no.

Si la funci n fscanf Lee correctamente los datos del archivo y los asigna a variables, devuelve el n mero de elementos asignados correctamente.

Sin embargo, si la funci n encuentra un error al Leer un archivo, devuelve EOF (End of File). Este valor indica el final del archivo o un error de lectura. En tal caso, puede utilizar la funci n feof () para comprobar si se ha alcanzado el final del archivo o si se ha producido un error de lectura y tomar las medidas adecuadas.

Adem s, si se produce un error al Leer desde un archivo, la funci n fscanf puede devolver un valor negativo que indica el tipo de error. Si el valor es EOF, significa el final del archivo o un error de lectura. Si el valor es menor que EOF, significa un error de formato o datos incorrectos.

En caso de error, puede usar la funci n perror() o strerror() para Mostrar informaci n adicional sobre el error.

Recomendaciones de uso

Al usar la funci n fscanf, es importante tener en cuenta algunos matices:

Antes de usar la funci n, debe abrir el archivo con la funci n fopen y asegurarse de que el archivo se abra correctamente.

Al llamar a la funci n fscanf, debe apuntar un puntero al archivo abierto y pasar los argumentos necesarios de acuerdo con el formato.

La funci n fscanf devuelve el n mero de elementos le dos correctamente. Si devuelve un valor menor que los argumentos pasados, puede indicar un error al Leer el archivo.

Debe especificar cuidadosamente el formato para Leer los valores. El formato especificado incorrectamente puede provocar una lectura incorrecta de los datos.

Despu s de Leer, debe cerrar el archivo con la funci n fclose.

Ejemplo de uso de la funci n fscanf:

#include

int main() {

FILE* file = fopen("input.txt", "r");

if (file == NULL) {

printf ("Error al abrir el archivo

");

return 1;

}

int a, b;

if (fscanf(file, "%d %d", &a, &b) == 2) {

printf ("se Leen dos n meros: %D y %d

", a, b);

} else {

printf ("Error al Leer n meros del archivo

");

}

fclose(file);

return 0;

}

En este ejemplo, el programa abre el archivo "input.txt " para Leer e intenta contar dos enteros que deben estar separados por un espacio. Si la lectura tiene xito, el programa emite los valores le dos. De lo contrario, aparece un mensaje de error.

Pregunta-respuesta

Qu es la funci n fscanf?