Conceptos básicos del manejo de archivos en C – Part 1

Hasta ahora, las operaciones que usan el programa C se realizan en un indicador / terminal que no está almacenado en ningún lado. Pero en la industria del software, la mayoría de los programas están escritos para almacenar la información obtenida del programa. Una de esas formas es almacenar la información obtenida en un archivo. Las diferentes operaciones que se pueden realizar sobre un archivo son: 
 

  1. Creación de un nuevo archivo ( abierto con atributos como “a” o “a+” o “w” o “w+”)
  2. Abriendo un archivo existente ( fopen )
  3. Lectura desde archivo ( fscanf o fgets )
  4. Escribir en un archivo ( fprintf o fputs )
  5. Mover a una ubicación específica en un archivo ( fseek, rebobinar )
  6. Cerrar un archivo ( fclose )

El texto entre paréntesis indica las funciones utilizadas para realizar esas operaciones.
Funciones en operaciones de archivo: 
 

Abrir o crear un archivo 
Para abrir un archivo, se utiliza la función fopen con los modos de acceso requeridos. A continuación se mencionan algunos de los modos de acceso a archivos más utilizados.
Modos de apertura de archivos en C: 
 

  • “r” – Archivo de búsquedas. Si el archivo se abre con éxito, fopen() lo carga en la memoria y establece un puntero que apunta al primer carácter que contiene. Si el archivo no se puede abrir, fopen( ) devuelve NULL.
  • “rb” – Abierto para lectura en modo binario. Si el archivo no existe, fopen() devuelve NULL.
  • “w” – Archivo de búsquedas. Si el archivo existe, su contenido se sobrescribe. Si el archivo no existe, se crea un nuevo archivo. Devuelve NULL, si no puede abrir el archivo.
  • «wb»: abierto para escribir en modo binario. Si el archivo existe, su contenido se sobrescribe. Si el archivo no existe, se creará.
  • “a” – Archivo de búsquedas. Si el archivo se abre con éxito, fopen() lo carga en la memoria y configura un puntero que apunta al último carácter que contiene. Si el archivo no existe, se crea un nuevo archivo. Devuelve NULL, si no puede abrir el archivo.
  • «ab»: abierto para agregar en modo binario. Los datos se agregan al final del archivo. Si el archivo no existe, se creará.
  • “r+” – Busca archivo. Si se abre con éxito, fopen() lo carga en la memoria y configura un puntero que apunta al primer carácter que contiene. Devuelve NULL, si no puede abrir el archivo.
  • “rb+” – Abierto tanto para lectura como para escritura en modo binario. Si el archivo no existe, fopen() devuelve NULL.
  • “w+” – Busca archivos. Si el archivo existe, su contenido se sobrescribe. Si el archivo no existe, se crea un nuevo archivo. Devuelve NULL, si no puede abrir el archivo.
  • “wb+” – Abierto tanto para lectura como para escritura en modo binario. Si el archivo existe, su contenido se sobrescribe. Si el archivo no existe, se creará.
  • “a+” – Busca archivos. Si el archivo se abre con éxito, fopen() lo carga en la memoria y configura un puntero que apunta al último carácter que contiene. Si el archivo no existe, se crea un nuevo archivo. Devuelve NULL, si no puede abrir el archivo.
  • “ab+”: abierto para leer y agregar en modo binario. Si el archivo no existe, se creará.

Como se indicó anteriormente, si desea realizar operaciones en un archivo binario, debe agregar ‘b’ al final. Por ejemplo, en lugar de «w», debe usar «wb», en lugar de «a+» debe usar «a+b». Para realizar las operaciones en el archivo, se utiliza un puntero especial llamado Puntero de archivo que se declara como 
 

FILE *filePointer; 

So, the file can be opened as 

filePointer = fopen(“fileName.txt”, “w”)

El segundo parámetro se puede cambiar para que contenga todos los atributos enumerados en la tabla anterior.
 

  • Lectura de un archivo: 
    las operaciones de lectura de archivos se pueden realizar mediante las funciones fscanf o fgets. Ambas funciones realizan las mismas operaciones que scanf y gets pero con un parámetro adicional, el puntero del archivo. Entonces, depende de ti si quieres leer el archivo línea por línea o carácter por carácter.
    Y el fragmento de código para leer un archivo es el siguiente: 
     
FILE * filePointer; 

filePointer = fopen(“fileName.txt”, “r”);

fscanf(filePointer, "%s %s %s %d", str1, str2, str3, &year);
  • Escritura de un archivo :
    las operaciones de escritura de archivos se pueden realizar mediante las funciones fprintf y fputs con similitudes con las operaciones de lectura. El fragmento para escribir en un archivo es como: 
     
FILE *filePointer ; 

filePointer = fopen(“fileName.txt”, “w”);

fprintf(filePointer, "%s %s %s %d", "We", "are", "in", 2012);
  • Cerrar un archivo
    después de cada operación de archivo exitosa, siempre debe cerrar un archivo. Para cerrar un archivo, debe usar la función fclose. El fragmento para cerrar un archivo se da como: 
     
FILE *filePointer ; 

filePointer= fopen(“fileName.txt”, “w”);

---------- Some file Operations -------

fclose(filePointer)

       
      Ejemplo 1: programa para abrir un archivo, escribir en él y cerrar el archivo
 

C

// C program to Open a File,
// Write in it, And Close the File
 
# include <stdio.h>
# include <string.h>
 
int main( )
{
 
    // Declare the file pointer
    FILE *filePointer ;
     
    // Get the data to be written in file
    char dataToBeWritten[50]
        = "GeeksforGeeks-A Computer Science Portal for Geeks";
 
    // Open the existing file GfgTest.c using fopen()
    // in write mode using "w" attribute
    filePointer = fopen("GfgTest.c", "w") ;
     
    // Check if this filePointer is null
    // which maybe if the file does not exist
    if ( filePointer == NULL )
    {
        printf( "GfgTest.c file failed to open." ) ;
    }
    else
    {
         
        printf("The file is now opened.\n") ;
         
        // Write the dataToBeWritten into the file
        if ( strlen ( dataToBeWritten ) > 0 )
        {
             
            // writing in the file using fputs()
            fputs(dataToBeWritten, filePointer) ;
            fputs("\n", filePointer) ;
        }
         
        // Closing the file using fclose()
        fclose(filePointer) ;
         
        printf("Data successfully written in file GfgTest.c\n");
        printf("The file is now closed.") ;
    }
    return 0;       
}

       

      Ejemplo 2: programa para abrir un archivo, leerlo y cerrar el archivo
 

C

// C program to Open a File,
// Read from it, And Close the File
 
# include <stdio.h>
# include <string.h>
 
int main( )
{
 
    // Declare the file pointer
    FILE *filePointer ;
     
    // Declare the variable for the data to be read from file
    char dataToBeRead[50];
 
    // Open the existing file GfgTest.c using fopen()
    // in read mode using "r" attribute
    filePointer = fopen("GfgTest.c", "r") ;
     
    // Check if this filePointer is null
    // which maybe if the file does not exist
    if ( filePointer == NULL )
    {
        printf( "GfgTest.c file failed to open." ) ;
    }
    else
    {
         
        printf("The file is now opened.\n") ;
         
        // Read the dataToBeRead from the file
        // using fgets() method
        while( fgets ( dataToBeRead, 50, filePointer ) != NULL )
        {
         
            // Print the dataToBeRead
            printf( "%s" , dataToBeRead ) ;
        }
         
        // Closing the file using fclose()
        fclose(filePointer) ;
         
        printf("Data successfully read from file GfgTest.c\n");
        printf("The file is now closed.") ;
    }
    return 0;       
}

       

      Ejemplo 3: programa para escribir en un archivo binario usando fwrite()
 

C

#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
 int n;
 struct threeNum num;
 FILE *fptr;
 if ((fptr = fopen("C:\\program.bin","wb")) == NULL){
 printf("Error! opening file");
 // Program exits if the file pointer returns NULL.
 exit(1);
 }
 for(n = 1; n < 5; ++n)  //Program Code Submitted by Susobhan Akhuli
 {
 num.n1 = n;
 num.n2 = 5*n;
 num.n3 = 5*n + 1;
 fwrite(&num, sizeof(struct threeNum), 1, fptr);
 }
 fclose(fptr);
 return 0;
}

       

      Ejemplo 4: programa para leer desde un archivo binario usando fread()
 

C

#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
 int n1, n2, n3;
};
int main()
{
 int n;
 struct threeNum num;
 FILE *fptr;
 if ((fptr = fopen("C:\\program.bin","rb")) == NULL){
 printf("Error! opening file");
 // Program exits if the file pointer returns NULL.
 exit(1);
 }
 for(n = 1; n < 5; ++n)  //Program Code Submitted by Susobhan Akhuli
 {
 fread(&num, sizeof(struct threeNum), 1, fptr);
 printf("n1: %d\tn2: %d\tn3: %d", num.n1, num.n2, num.n3);
 }
 fclose(fptr);
  
 return 0;
}

      

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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