Lectura y escritura en archivos binarios

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
Masakre
Mensajes: 249
Registrado: 06/06/2012 10:52 am

Lectura y escritura en archivos binarios

#1 Mensaje por Masakre » 09/11/2012 4:27 pm

Recuerdo que Sorancio nos dio un alcance sobre cómo abrir un archivo .txt e incluso escribir en él.
leosan lo trabajaba en C y yo conseguí hacerlo en C++.

Ahora debo hacer una exposición sobre 'lectura y escritura en archivos binarios'.

Estuve leyendo esto
sobre archivos binarios, pero la verdad es que Wikipedia no me ha ayudado mucho que digamos. Esperaba encontrarme con extensiones de archivo para saber más o menos a qué se refiere con binario.

Incluso me ha parecido ver en un thread (en este mismo foro) que se habla de archivos .DAT

Por otro lado, algo entendible que encontré fue esto:
Y hay una parte en que indica:
Tipo de almacenamiento en Archivos
Archivos de texto: Los datos se almacenan usando código ASCII y por
tanto, pueden ser procesados por cualquier editor de texto.
Archivos binarios: Los datos se almacenan en binario.
¿Será que con binario se refiera a un archivo sin extensión que contiene 0s y 1s?

Gracias de antemano por las aclaraciones que puedan brindarme.

polly
Mensajes: 619
Registrado: 19/07/2007 3:42 pm
Ubicación: Valladolid (Spain)
Contactar:

#2 Mensaje por polly » 10/11/2012 5:27 am

Generalmente archivo binario hace referencia a todo aquel archivo que el ordenador puede leer pero nosotros no (ficheros de video, imágenes, .zip, etc).
Resumiendo, datos binarios son todos aquellos datos que no son simple texto.

Por otra parte, como nosotros no podemos leer archivos binarios, es necesario saber qué tipo de estructuras de datos son almacenadas en tales ficheros. Por ejemplo: si tenemos un .mp3 y queremos leerlo entonces debemos ir a la especificación de mp3 y averiguar cómo son estructurados estos ficheros.
enrmarc

Masakre
Mensajes: 249
Registrado: 06/06/2012 10:52 am

#3 Mensaje por Masakre » 10/11/2012 8:09 am

¿Y es posible leer/escribir archivos binarios en C++?
En todo caso no sabría como funciona la lectura y escritura de imágenes, .zip, .mp3 con C++ :roll:

polly
Mensajes: 619
Registrado: 19/07/2007 3:42 pm
Ubicación: Valladolid (Spain)
Contactar:

#4 Mensaje por polly » 10/11/2012 8:47 am

Claro que es posible. Un ejemplo:

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char nombre[16];
    int edad;
} Persona;

int main(void) {

    Persona p = {
        "Fausto",
        50
    };

    FILE *fichero = fopen("data", "wb");
    fwrite(&p, sizeof(Persona), 1, fichero);
    fclose(fichero);
    return 0;
}
El código anterior almacena una estructura de datos (que representa vagamente a una persona) en binario en un fichero.

Si abres el fichero "data" con cualquier editor de texto verás que no es simple texto plano. La única forma de leer ese fichero es sabiendo que el que lo escribió definió una estructura de tipo Persona con exactamente 2 campos, uno de los cuales es una cadena y el otro un entero.
enrmarc

Masakre
Mensajes: 249
Registrado: 06/06/2012 10:52 am

#5 Mensaje por Masakre » 15/11/2012 6:40 pm

Me pregunto si existe alguna diferencia en usar typedef antes de struct o simplemente no hacerlo.

¿Esto es lo que hace que lo que sigue luego de las llaves de cierre sea el nombre del struct que se está definiendo?

He visto que suelen usar:

Código: Seleccionar todo

struct nombre_del_struct{
    // Declaración de datos miembro, o campos.
}variable_del_struct1, variable_del_struct2;
Además recuerdo haber leído que no es correcto referirse a struct como estructura y que se les debe llamar registro. Sin embargo, en un libro vi que se refieren a struct exactamente de ese modo (como estructura) :)

En este caso, ¿variable_del_struct1 y variable_del_struct2 serían objetos?

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados