E/S de archivos C: crear, abrir, leer, escribir y cerrar un archivo

C Gestión de archivos

Se puede utilizar un archivo para almacenar un gran volumen de datos persistentes. Como muchos otros idiomas, 'C' proporciona seguimientowing funciones de gestión de archivos,

  1. Creación de un archivo
  2. Abrir un archivo
  3. Leer un archivo
  4. Escribir en un archivo
  5. Cerrar un archivo

Following son las funciones de administración de archivos más importantes disponibles en 'C'

función propósito
abrir () Crear un archivo o abrir un archivo existente
cerrar () Cerrar un archivo
fprintf() Escribir un bloque de datos en un archivo
fscanf() Leer un bloque de datos de un archivo
obtenerc() Lee un solo carácter de un archivo
putc () Escribe un solo carácter en un archivo.
obtener W () Lee un número entero de un archivo
poner () Escribir un número entero en un archivo
buscar () Establece la posición de un puntero de archivo en una ubicación especificada
ftell () Devuelve la posición actual de un puntero de archivo.
rebobinar () Establece el puntero del archivo al principio de un archivo.

Cómo crear un archivo

Siempre que desee trabajar con un archivo, el primer paso es crear un archivo. Un archivo no es más que espacio en una memoria donde se almacenan datos.

Para crear un archivo en un programa 'C' sigawing se utiliza la 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 abre directamente usando este función.

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

Cada vez que abre o crea un archivo, debe especificar qué va a hacer con el archivo. Se puede crear o abrir un archivo en programación 'C' para fines de lectura/escritura. Un modo se utiliza para especificar si desea abrir un archivo para cualquiera de los propósitos que se indican a continuación. seguirwing son los diferentes tipos de modos en la programación 'C' que se pueden usar mientras se trabaja con un archivo.

Modo de archivo Descripción
r Abra un archivo para leer. Si un archivo está en modo de lectura, no se eliminan datos 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 existe en absoluto. Si un archivo ya está presente en un sistema, todos los datos dentro del archivo se truncan y se abre para fines de escritura.
a Abrir un archivo en
modo anexar. Si un archivo está en modo de agregar, entonces se abre el archivo. El contenido del archivo no cambia.
r+ Abierto para leer y escribir desde el principio.
w+ abierto para lectura y escritura, sobrescribiendo un archivo
a+ abierto para lectura y escritura, anexando al archivo

En la sintaxis dada, el nombre del archivo y el modo se especifican como cadenas, por lo que siempre deben estar encerrados entre double citas.

Ejemplo:

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

Salida:

El archivo se crea en la misma carpeta donde guardó su código.

Cómo crear un archivo

Puede especificar la ruta donde desea crear su archivo.

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

Cómo crear un archivo

Cómo cerrar un archivo

Siempre se debe cerrar un archivo cada vez que finalicen las operaciones en el archivo. Significa que los contenidos y enlaces al archivo se cancelan. Esto evita daños accidentales al archivo.

'C' proporciona la función fclose para realizar la operación de cierre de archivos. 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. Luego, el archivo asociado con el puntero del archivo se cierra con la ayuda de la función fclose. Devuelve 0 si el cierre fue exitoso y EOF (fin 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 finaliza el programa. Cerrar un archivo manualmente escribiendo la función fclose es una buena práctica de programación.

Escribir en un archivo

En C, cuando escribe en un archivo, se deben agregar explícitamente los caracteres de nueva línea "\n".

La biblioteca stdio ofrece las funciones necesarias para escribir en un archivo:

  • fputc(carácter, puntero_archivo): Escribe un carácter en el archivo señalado por file_pointer.
  • fputs(cadena, puntero_archivo): Escribe una cadena en el archivo señalado por file_pointer.
  • fprintf(file_pointer, str, variables_lists): Imprime una cadena al archivo señalado por file_pointer. Opcionalmente, la cadena puede incluir especificadores de formato y una lista de variables listas_variables.

El siguiente programa muestra cómo realizar la escritura en un archivo:

Función fputc():

#include <stdio.h>
int main() {
        int i;
        FILE * fptr;
        char fn[50];
        char str[] = "Guru99 Rocks\n";
        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;
    }

Salida:

Escribir en un archivo

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.

Escribir en un archivo

  1. En el programa anterior, creamos y abrimos un archivo llamado fputc_test.txt en modo de escritura y declaramos nuestra cadena que se escribirá en el archivo.
  2. Hacemos una operación de escritura carácter por carácter usando el bucle for y colocamos cada carácter en nuestro archivo hasta que se encuentra el carácter "\n", luego el archivo se cierra usando la función fclose.

fputs() Función:

#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 loop\n", fp);
        fputs("Easier than fputc function\n", fp);
        fclose(fp);
        return (0);
    }

Salida:

Escribir en un archivo

Escribir en un archivo

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

fprintf()Función:

#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 Guru99\n");
        fclose(fptr);
        return 0;
    }

Salida:

Escribir en un archivo

Escribir en un archivo

  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 un archivo

Hay tres funciones diferentes dedicadas a leer datos de un archivo.

  • fgetc(file_pointer): Devuelve el siguiente carácter del archivo al que apunta el puntero del archivo. Cuando se llega al final del archivo, se devuelve el EOF.
  • fgets(buffer, n, puntero_archivo): Lee n-1 caracteres del archivo y almacena la cadena en un buffer en el que se añade el carácter NULL '\0' como último carácter.
  • fscanf(puntero_archivo, especificadores_conversión, direcciones_variable): Se utiliza para analizar y analizar datos. Lee caracteres del archivo y asigna la entrada a una lista de punteros variables direcciones_variables utilizando especificadores de conversión. Tenga en cuenta que, al igual que con scanf, fscanf deja de leer una cadena cuando se encuentra un espacio o una nueva línea.

El following El programa demuestra la lectura 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("%s\n", 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

Leer datos de un archivo

  1. En el programa anterior, abrimos el archivo llamado "fprintf_test.txt" que se escribió previamente usando la función fprintf() y contiene la cadena "Aprendiendo C con Guru99". Lo leemos usando la función fgets() que lee línea por línea dónde está buffer El tamaño debe ser suficiente para manejar toda la línea.
  2. Volvemos a abrir el archivo para restablecer el archivo de puntero para que apunte al principio del archivo. Cree varias variables de cadena para manejar cada palabra por separado. Imprima las variables para ver su contenido. fscanf() se utiliza principalmente para extraer y analizar datos de un archivo.
  3. Vuelva a abrir el archivo para restablecer el archivo de puntero para que apunte al principio del archivo. Lea los datos e imprímalos desde el archivo carácter por carácter usando la función getc() hasta que encuentre la declaración EOF
  4. Después de realizar una operación de lectura del archivo usando diferentes variantes, nuevamente cerramos el archivo usando la función fclose.

Lectura y escritura de archivos interactivos con getc y putc

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

Following El programa demuestra las funciones de manejo de archivos en la programación 'C':

#include <stdio.h>
int main() {
        FILE * fp;
        char c;
        printf("File Handling\n");
        //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;
    }

Salida:

Lectura y escritura de archivos interactivos con getc y putc

Lectura y escritura de archivos interactivos con getc y putc

  1. En el programa anterior hemos creado y abierto un archivo llamado demo en modo de escritura.
  2. Después de realizar una operación de escritura, el archivo se cierra usando la función fclose.
  3. Hemos abierto nuevamente un archivo que ahora contiene datos en modo lectura. Se ejecutará un bucle while hasta que se encuentre el eof. Una vez que se encuentre 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, el archivo se cierra nuevamente usando la función fclose.

Resumen

  • Un archivo es un espacio en una memoria donde se almacenan datos.
  • La programación 'C' proporciona varias funciones para manejar un archivo.
  • Un mecanismo de manipulación de archivos se denomina gestión de archivos.
  • Se debe abrir un archivo antes de realizar operaciones en él.
  • Un archivo se puede abrir en modo de lectura, escritura o adición.
  • Las funciones Getc y putc se utilizan para leer y escribir un solo carácter.
  • La función fscanf() permite leer y analizar datos de un archivo
  • Podemos leer (usando el getc función) un archivo completo 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 debe tener el carácter de nueva línea al final del texto de la cadena.