Crear, abrir, leer, escribir y cerrar archivos

C Gestión de archivos

El archivo se puede utilizar para almacenar grandes cantidades de datos duraderos. Como muchos otros lenguajes, ‘C’ proporciona las siguientes funciones de gestión de archivos,

  1. Creación de archivos
  2. Abrir un archivo
  3. Leyendo archivo
  4. Escribiendo en archivo
  5. Cerrar archivos

Las siguientes son las funciones de administración de archivos más importantes disponibles en ‘C’,

función propósito
fopen () Crea un archivo o abre un archivo existente
fclose () Cerrar archivos
fprintf () Escribir un bloque de datos en un archivo
fscanf () Bloquear datos de un archivo leído
getc () Un solo carácter lee de un archivo
putc () Un solo carácter escribe en un archivo
obtener W () Leer un número entero de un archivo
putw () Escribe un número entero en un archivo
fseek () Establecer la ubicación del puntero del archivo en la ubicación especificada
ftell () Devuelve el estado actual de un puntero de archivo.
rebobinar () El puntero establece el archivo al principio de un archivo.

En este tutorial, aprenderá:

Cómo crear un archivo

Siempre que desee trabajar con un archivo, el primer paso es crear un archivo. Un archivo es solo un espacio de memoria donde se almacenan los datos.

Para crear un archivo en el programa ‘C’ se usa esta sintaxis,

FILE *fp;
fp = fopen ("file_name", "mode");

En la sintaxis anterior, el archivo es una estructura de datos definida en la biblioteca estándar.

Fopen es una función estándar que se utiliza para abrir un archivo.

  • Si el archivo no está presente en el sistema, se crea y luego se abre.
  • Si un archivo ya está presente en el sistema, se abrirá directamente usando esta función.

Fp es un puntero de archivo que apunta al tipo de archivo.

Siempre que abra o cree un archivo, debe especificar qué hará con el archivo. Se puede crear o abrir un archivo en el registro ‘C’ con fines de lectura / escritura. Se utiliza un método para especificar si desea abrir un archivo para cualquiera de los siguientes propósitos. Los siguientes son los diferentes tipos de métodos en la programación ‘C’ que se pueden usar cuando se trabaja con un archivo.

Modo de archivo Suelte
r Abra un archivo para leer. Si un archivo está en modo de lectura, no se elimina ningún dato si un archivo ya está presente en un sistema.
w Abra un archivo para escribir. Si un archivo está en modo de escritura, se crea un nuevo archivo si no hay ningún archivo. Si un archivo ya está presente en un sistema, se requieren todos los datos dentro del archivo y se abre con fines de escritura.
a Abra un archivo en modo apéndice. Si un archivo está en modo de apéndice, se abre. El contenido del archivo no cambia.
r + abierto a la lectura y la escritura desde el principio
w + abierto para leer y escribir, escribir el archivo
a + abierto para leer y escribir, adjuntando el archivo

En la sintaxis dada, el nombre del archivo y el método se especifican como cadenas y, por lo tanto, siempre deben estar entre comillas dobles.

Ejemplo:

#include <stdio.h>
int main() {
FILE *fp;
fp  = fopen ("data.txt", "w");
}

Producción:

Se crea un archivo en la misma carpeta donde guardó su código.

Puede especificar la ruta en la que desea crear su archivo

#include <stdio.h>
int main() {
FILE *fp;
fp  = fopen ("D://data.txt", "w");
}

Cómo cerrar un archivo

Un archivo siempre debe cerrarse cuando se completan las operaciones en el archivo. Significa que se eliminan el contenido y los enlaces al archivo. Esto evita daños accidentales al archivo.

‘C’ proporciona la función fclose para realizar una operación de cierre de archivo. La sintaxis de fclose es la siguiente,

fclose (file_pointer);

Ejemplo:

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

La función fclose toma un puntero de archivo como argumento. El archivo asociado con el puntero de archivo se cerrará con la ayuda de la función fclose. Devuelve 0 si está cerrado y EOF (final del archivo) si se produjo un error al cerrar el archivo.

Después de cerrar el archivo, el mismo puntero de archivo también se puede utilizar con otros archivos.

En la programación ‘C’, los archivos se cierran automáticamente cuando se termina el programa. Es una buena práctica de programación cerrar manualmente un archivo escribiendo una función fclose.

Escribir en archivo

IC, al escribir en un archivo, los caracteres de nueva línea ‘ n’ deben agregarse explícitamente.

La biblioteca de estudio proporciona las funciones necesarias para escribir en un archivo:

  • fputc (carácter, puntero_archivo): Escribe caracteres para el archivo al que presta atención a file_pointer.
  • fputs (str, file_pointer): Escribe una cadena para el archivo al que presta atención a file_pointer.
  • fprintf (puntero_archivo, str, listas_variables): Imprime una cadena para el archivo al que presta atención file_pointer. Las especificaciones de formato y la lista de variables de la lista de variables se pueden incluir opcionalmente en la cadena.

El programa siguiente muestra cómo escribir un archivo:

Función fputc ():

#include <stdio.h>
int main() {
        int i;
        FILE * fptr;
        char fn[50];
        char str[] = "Guru99 Rocksn";
        fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"
        for (i = 0; str[i] != 'n'; i++) {
            /* write to file using fputc() function */
            fputc(str[i], fptr);
        }
        fclose(fptr);
        return 0;
    }

Producción:

El programa anterior escribe un solo carácter en el fputc_test.txt archivo hasta que llegue al símbolo de la siguiente línea » n» que indica que la oración se escribió correctamente. El proceso consiste en tomar cada carácter de la matriz y escribirlo en el archivo.

  1. En el programa anterior, hemos creado y abierto un archivo llamado fputc_test.txt en modo de escritura y confirmamos que nuestra cadena se escribirá en el archivo.
  2. Realizamos una operación de escritura carácter por carácter usando un bucle y agregamos cada carácter a nuestro archivo hasta que llega el carácter n «luego el archivo se cierra usando la función fclose.

Función fputs ():

#include <stdio.h>
int main() {
        FILE * fp;
        fp = fopen("fputs_test.txt", "w+");
        fputs("This is Guru99 Tutorial on fputs,", fp);
        fputs("We don't need to use for loopn", fp);
        fputs("Easier than fputc functionn", fp);
        fclose(fp);
        return (0);
    }

RESULTADO:

  1. En el programa anterior, hemos creado y abierto un archivo llamado fputs_test.txt en modo de escritura.
  2. Después de realizar una operación de escritura usando la función fputs () escribiendo tres conjuntos diferentes
  3. A continuación, el archivo se cierra mediante la función fclose.

Función fprintf ():

#include <stdio.h>
    int main() {
        FILE *fptr;
        fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"
        /* write to file */
        fprintf(fptr, "Learning C with Guru99n");
        fclose(fptr);
        return 0;
    }

RESULTADO:

  1. En el programa anterior, hemos creado y abierto un archivo llamado fprintf_test.txt en modo de escritura.
  2. Después de realizar una operación de escritura usando la función fprintf () escribiendo una cadena, el archivo se cierra usando la función fclose.

Leer datos de archivo

Hay tres funciones diferentes dedicadas a leer datos de un archivo

  • fgetc (puntero_archivo): Devuelve el siguiente carácter del archivo que advierte el puntero del archivo. Cuando se llega al final del archivo, se devuelve el EOF.
  • fgets (búfer, n, puntero_archivo): Lee n-1 caracteres del archivo y almacena la cadena en un búfer donde se adjunta el carácter NULL ‘ 0’ como último carácter.
  • fscanf (puntero_archivo, Convert_specifiers, variables_adresses): Se utiliza para analizar y analizar datos. Lee caracteres del archivo y asigna la entrada a una lista de variables prompts_adresses usando especificadores de conversión. Tenga en cuenta que, al igual que con scanf, fscanf deja de leer el cable cuando hay un nuevo espacio o línea.

El siguiente programa muestra lecturas del archivo fputs_test.txt usando las funciones fgets (), fscanf () y fgetc () respectivamente:

#include <stdio.h>
int main() {
        FILE * file_pointer;
        char buffer[30], c;

        file_pointer = fopen("fprintf_test.txt", "r");
        printf("----read a line----n");
        fgets(buffer, 50, file_pointer);
        printf("%sn", buffer);

        printf("----read and parse data----n");
        file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer
        char str1[10], str2[2], str3[20], str4[2];
        fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);
        printf("Read String1 |%s|n", str1);
        printf("Read String2 |%s|n", str2);
        printf("Read String3 |%s|n", str3);
        printf("Read String4 |%s|n", str4);

        printf("----read the entire file----n");

        file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer
        while ((c = getc(file_pointer)) != EOF) printf("%c", c);

        fclose(file_pointer);
        return 0;
    }

Resultado:

----read a line----
Learning C with Guru99

----read and parse data----
Read String1 |Learning|
Read String2 |C|
Read String3 |with|
Read String4 |Guru99|
----read the entire file----
Learning C with Guru99
  1. En el programa anterior, tenemos un archivo abierto llamado «fprintf_test.txt» que fue escrito previamente usando la función fprintf () y contiene una cadena «Aprendiendo C con Guru99». Lo leemos usando la función fgets () que lee una línea donde el tamaño del búfer debe ser suficiente para manejar toda la línea.
  2. Volvemos a abrir el archivo para restablecer el archivo de puntero a un punto al principio del archivo. Cree diferentes variables de cadena para manejar cada palabra por separado. Imprima las variables para ver su contenido. El fscanf () se usa principalmente para extraer y analizar datos de un archivo.
  3. Vuelva a abrir el archivo para restablecer el archivo de puntero a un punto al principio del archivo. Leer datos e imprimir desde el archivo carácter a carácter usando la función getc () hasta que se encuentre la declaración EOF
  4. Después de hacer un archivo de operación de lectura usando diferentes versiones, cerramos el archivo nuevamente usando la función fclose.

Lectura y escritura interactiva de archivos con getc y putc

Estas son las operaciones de archivo más simples. Getc significa obtener carácter y putc significa poner carácter. Ambas funciones se utilizan para manejar un carácter a la vez.

El siguiente programa muestra las funciones de manejo de archivos en la programación ‘C’:

#include <stdio.h>
int main() {
        FILE * fp;
        char c;
        printf("File Handlingn");
        //open a file
        fp = fopen("demo.txt", "w");
        //writing operation
        while ((c = getchar()) != EOF) {
            putc(c, fp);
        }
        //close file
        fclose(fp);
        printf("Data Entered:n");
        //reading
        fp = fopen("demo.txt", "r");
        while ((c = getc(fp)) != EOF) {
            printf("%c", c);
        }
        fclose(fp);
        return 0;
    }

Producción:

  1. En el programa anterior hemos creado y abierto un archivo llamado demo en modo escritura.
  2. Después de una operación de escritura, el archivo se cerrará usando la función fclose.
  3. Hemos vuelto a abrir un archivo que contiene datos ahora en modo lectura. Se ejecutará un ciclo de tiempo hasta que se reciba el eof. Una vez que se encuentra el final del archivo, la operación finalizará y los datos se mostrarán usando la función printf.
  4. Después de realizar una operación de lectura, cierre el archivo nuevamente usando la función fclose.

Resumen

  • Un archivo de memoria es un espacio donde se almacenan datos.
  • Los programas ‘C’ proporcionan varias funciones para manejar un archivo.
  • Se proporciona un mecanismo para manipular los archivos como gestión de archivos.
  • Se debe abrir un archivo antes de que se puedan realizar las operaciones.
  • Un archivo se puede abrir en modo de lectura, escritura o apéndice.
  • Las funciones getc y putc se utilizan para leer y escribir un solo carácter.
  • La función fscanf () permite leer y analizar los datos de un archivo
  • Podemos leer (usando un getc función) complete el archivo haciendo un bucle para cubrir todo el archivo hasta que se encuentre el EOF
  • Podemos escribir en un archivo después de crear su nombre, usando la función fprintf () y el carácter debe tener una nueva línea al final del texto de la cadena.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Salir de la versión móvil