Acceso a archivos con bibliotecas de bajo nivel.
Ejemplos de lectura y escritura de archivos en C++ con la librería cstdio
La librería cstdio en C++ ofrece funciones para manejar archivos de forma básica. A continuación, se muestran algunos ejemplos de cómo leer y escribir en archivos utilizando estas funciones:
Escribir en un archivo:
#include <stdio.h>
int main() {
// Se abre el archivo "archivo.txt" en modo escritura ("w")
FILE *archivo = fopen("archivo.txt", "w");
// Si no se pudo abrir el archivo, se muestra un mensaje de error y se termina el programa
if (archivo == NULL) {
printf("Error al abrir el archivo");
return 1;
}
// Se escribe el texto "Este es un ejemplo de escritura en un archivo" en el archivo
fprintf(archivo, "Este es un ejemplo de escritura en un archivo\n");
// Se cierra el archivo
fclose(archivo);
return 0;
}
Leer un archivo:
#include <stdio.h>
int main() {
// Se abre el archivo "archivo.txt" en modo lectura ("r")
FILE *archivo = fopen("archivo.txt", "r");
// Si no se pudo abrir el archivo, se muestra un mensaje de error y se termina el programa
if (archivo == NULL) {
printf("Error al abrir el archivo");
return 1;
}
// Se declara una variable para almacenar el caracter leído
char caracter;
// Se lee caracter por caracter del archivo hasta que se llega al final del archivo (EOF)
while ((caracter = fgetc(archivo)) != EOF) {
// Se imprime el caracter leído en la consola
printf("%c", caracter);
}
// Se cierra el archivo
fclose(archivo);
return 0;
}
Leer y escribir en un archivo binario:
#include <stdio.h>
int main() {
// Se abre el archivo "datos.bin" en modo binario ("rb" para lectura y "wb" para escritura)
FILE *archivo = fopen("datos.bin", "rb+w");
// Si no se pudo abrir el archivo, se muestra un mensaje de error y se termina el programa
if (archivo == NULL) {
printf("Error al abrir el archivo");
return 1;
}
// Se define un tipo de dato para almacenar un número entero de 32 bits
typedef int32_t tipo_dato;
// Se declara una variable de tipo "tipo_dato" para almacenar el dato a escribir
tipo_dato dato = 12345;
// Se escribe el dato "dato" en el archivo
fwrite(&dato, sizeof(tipo_dato), 1, archivo);
// Se rebobina el archivo al principio
rewind(archivo);
// Se lee el dato del archivo y se almacena en la variable "dato_leido"
tipo_dato dato_leido;
fread(&dato_leido, sizeof(tipo_dato), 1, archivo);
// Se imprime el dato leído en la consola
printf("Dato leído: %d\n", dato_leido);
// Se cierra el archivo
fclose(archivo);
return 0;
}
Explicación del código C++
1. Incluir la biblioteca de entrada/salida:
#include <stdio.h>
Se incluye la biblioteca stdio.h para utilizar funciones de entrada y salida de datos, como fopen, fwrite, fread, printf y fclose.
2. Función principal:
int main() {
// ...
}
La función main() es el punto de entrada del programa. Aquí se define el código que se ejecutará cuando se ejecute el programa.
3. Abrir el archivo binario:
FILE *archivo = fopen("datos.bin", "rb+w");
La función fopen() se utiliza para abrir un archivo. En este caso, se abre un archivo llamado "datos.bin" en modo binario. El modo "rb+w" indica que el archivo se abre para lectura y escritura. Si el archivo no existe, se creará uno nuevo.
4. Comprobar si se abrió el archivo correctamente:
if (archivo == NULL) {
printf("Error al abrir el archivo");
return 1;
}
Se verifica si la función fopen() devolvió un puntero NULL. Si es así, significa que hubo un error al abrir el archivo. En este caso, se muestra un mensaje de error y se termina el programa con un código de retorno de 1.
5. Definir un tipo de dato:
typedef int32_t tipo_dato;
Se utiliza la palabra clave typedef para crear un nuevo tipo de dato llamado tipo_dato. Este nuevo tipo de dato es un alias para el tipo de dato int32_t, que representa un entero de 32 bits.
6. Declarar una variable para almacenar el dato:
tipo_dato dato = 12345;
Se declara una variable llamada dato del tipo tipo_dato y se le asigna el valor 12345.
7. Escribir el dato en el archivo:
fwrite(&dato, sizeof(tipo_dato), 1, archivo);
La función fwrite() se utiliza para escribir datos en un archivo. En este caso, se escribe la variable dato en el archivo archivo. El primer argumento (&dato) es la dirección de la variable que contiene los datos que se quieren escribir. El segundo argumento (sizeof(tipo_dato)) indica el tamaño del tipo de dato en bytes. El tercer argumento (1) indica el número de elementos del tipo de dato que se quieren escribir. El cuarto argumento (archivo) es un puntero al archivo donde se quieren escribir los datos.
8. Rebobinar el archivo al principio:
rewind(archivo);
La función rewind() se utiliza para rebobinar el archivo al principio. Esto es necesario para poder leer el dato que se acaba de escribir.
9. Leer el dato del archivo:
tipo_dato dato_leido;
fread(&dato_leido, sizeof(tipo_dato), 1, archivo);
La función fread() se utiliza para leer datos de un archivo. En este caso, se lee un dato del tipo tipo_dato del archivo archivo y se almacena en la variable dato_leido. El primer argumento (&dato_leido) es la dirección de la variable donde se quieren almacenar los datos leídos. El segundo argumento (sizeof(tipo_dato)) indica el tamaño del tipo de dato en bytes. El tercer argumento (1) indica el número de elementos del tipo de dato que se quieren leer. El cuarto argumento (archivo) es un puntero al archivo del que se quieren leer los datos.
10. Imprimir el dato leído en la consola:
printf("Dato leído: %d\n", dato_leido);
La función printf() se utiliza para imprimir un mensaje en la consola. En este caso, se imprime un mensaje que indica el valor del dato que se ha leído del archivo.
11. Cerrar el archivo:
fclose(archivo);
La función fclose() se utiliza para cerrar el archivo. Esto es importante para liberar los recursos asociados al archivo.
12. Devolver un código de éxito:
return 0;
La función main() devuelve un código de éxito (0) al final del programa.
Comentarios
Publicar un comentario