Manejo de archivos en C: una guía para principiantes

Los programas generalmente necesitan una estructura de datos para almacenar los datos que pueden necesitar durante la ejecución. Normalmente, estos datos se almacenan en variables o matrices. El problema con esto es que se pierde tan pronto como el programa termina de ejecutarse. Esto se debe a que son ubicaciones de memoria temporales.

Si necesita que se pueda acceder a sus datos incluso después de ejecutar un programa, tendrá que guardarlos en un archivo. Los archivos pueden ser de texto o binarios.

Este artículo se centra en cómo puede administrar archivos de texto en C. Esto es lo que necesita saber.

Abrir un archivo

Primero, es importante saber que siempre debe declarar un puntero de tipo FILE cuando trabaje con archivos. Este puntero es necesario para permitir la comunicación entre el archivo y el programa.

 FILE *filePtr;

Para poder escribir, leer o actualizar un archivo, primero debe abrirlo. C proporciona la función de biblioteca estándar fopen () para hacer eso.

Relacionado: Cómo comprobar si dos matrices son idénticas a la programación

Esta función toma dos argumentos de cadena: el nombre del archivo y el modo. Si el archivo que está abriendo no se encuentra en el directorio del programa en el que se encuentra actualmente, puede proporcionar su ruta de archivo en lugar de simplemente usar el nombre del archivo.

Mire la sintaxis a continuación sobre cómo usar fopen () :

 filePtr = fopen("filename.txt", "mode");

La variable filePtr es un puntero de tipo FILE . El modo de argumento se refiere a la forma en que se debe abrir el archivo. Es decir, qué funciones se espera que se realicen en el archivo.

Hay tres modos en los que puede abrir un archivo en C. Estos modos son r, w y a . Para leer un archivo, use r . Para escribir en un archivo, use w . Para agregar datos al final de un archivo, use a .

Por ejemplo, si planea leer el contenido de un archivo llamado programación.txt , entonces usaría la siguiente declaración:

 filePtr = fopen("programming.txt" , "r");

Aparte de r, w y a , existen otros modos extendidos. A continuación se muestra una discusión de estos modos para archivos de texto:

r + yw + : Ambos modos se utilizan para abrir un archivo para lectura y escritura. La diferencia es que r + hace que fopen () devuelva NULL si ese archivo no existe, mientras que w + crea el archivo en su lugar. Otra cosa a tener en cuenta es que w + sobrescribe un archivo si existe.

a + : este modo se usa para abrir un archivo para agregar y leer. Si el archivo no existe, se crea.

Escritura y lectura

Puede utilizar las funciones fprintf y fscanf respectivamente, para escribir y leer en un archivo. Estas dos funciones son comparables en funcionalidad a las funciones printf y scanf en E / S básicas.

 #include <stdio.h>
int main(void){
// pointer declaration
FILE *filePtr;
filePtr = fopen("myfile.txt", "w");
//the message below will be written to myfile.txt
fprintf(filePtr, "%s", "Files are permanent memory locations.");
}

El código anterior muestra cómo puede crear un archivo llamado myfile.txt y luego almacenar un mensaje en él. Para leer el contenido del archivo recién creado, consulte el código a continuación.

 #include <stdio.h>
#include <stdlib.h>
int main(void){
char message[196];
FILE *filePtr;
filePtr = fopen("myfile.txt", "r");
if (filePtr == NULL){
printf("Error opening the file");
//program exists if the pointer returns NULL
exit(1);
}
fscanf(filePtr,"%s", &message);
printf("The message is: %s", message);
fclose(filePtr);
}

Cuando compile y ejecute el código anterior, su salida será Archivos. Notarás que este no es el mensaje completo que almacenaste en myfile.txt . Sin embargo, no se preocupe. Esto no es un error en el código.

Relacionado: ¿Cómo se encuentra el valor ASCII de un carácter?

Cuando el programa encuentra un espacio, deja de leer el contenido del archivo. Si, en cambio, el mensaje se escribiera como Archivos-son-ubicaciones-de-memoria-permanente, entonces obtendría todo ese resultado en su pantalla.

En ambos ejemplos de código dados, debería haber notado la declaración fclose () . Siempre debe cerrar un archivo (texto o binario) después de usarlo.

Una mirada a la programación en C ++

Habiendo alcanzado este nivel de manejo de archivos en C, es probable que sea un usuario superior al promedio en el idioma. Esto también significa que debería buscar formas más eficientes de programación.

C ++ es la respuesta. Es la versión orientada a objetos de C. A estas alturas ya deberías estar doblando tus mangas para aprender este lenguaje de tendencias.