elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema al crear archivo en binary
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al crear archivo en binary  (Leído 1,965 veces)
antkk

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Problema al crear archivo en binary
« en: 5 Junio 2015, 17:37 pm »

Buenas, estoy haciendo un ejercicio y uno de los métodos de mi clase que se llama void Escribir, saca los datos de una matriz a un archivo que tiene que tener salida en binario. Me compila el programa, al ejecutar me crea un fichero en binario. Abro el archivo con gedit y me encuentro este problema:

"El archivo que abrió contiene algunos caracteres no válidos. Si continua editando este archivo puede corromper el documento.
También puede elegir cualquier otra codificación de caracteres e intentarlo de nuevo."

El contenido del archivo es este:

Código:
"MP
4
\00\00\00 \00\00\00\00\00\00\00@ \00\00\00\00\00\00\00@ \00\00\00 \00\00\00\00\00\00\F0? \00\00\00\00\00\00\F0? \00\00\00 \00\00\00\00\00\00@ \00\00\00\00\00\00@ \00\00\00\00\00\00@ \00\00\00 \00\00\00\00\00\00@ \00\00\00\00\00\00@ \00\00\00\00\00\00@ "

Y el código del método es este:

Código
  1. void Matriz::Escribir(const char* nombre, const char* comentario){
  2.  
  3. ofstream archivo(nombre,ios::binary | ios::out);
  4.  
  5. if(!archivo.is_open())
  6. cout << "Error de apertura de archivo. ";
  7. else{
  8.  
  9. archivo << "MP" << endl;
  10.  
  11. if(comentario != 0){
  12. archivo << '#' << comentario << endl;
  13. }
  14.  
  15. archivo << this->nfilas << endl;
  16.  
  17. for(int i=0;i<this->nfilas;i++){
  18. archivo.write((char*)(&this->ncolumnas[i]),sizeof(int));
  19. archivo << " ";
  20. for(int j=0;j<ncolumnas[i];j++){
  21. archivo.write((char*)(&this->datos[i][j]),sizeof(double));
  22. archivo << " ";
  23. }
  24. }
  25.  
  26.  
  27. }
  28.  
  29. archivo.close();
  30. }
  31.  

Los datos privados de la clase Matriz son estos:

Código
  1. int nfilas;
  2. int *ncolumnas; // Número de columnas de cada fila.
  3. double **datos;

Mod: los códigos deben ir en etiquetas GeSHi


« Última modificación: 5 Junio 2015, 18:07 pm por engel lex » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problema al crear archivo en binary
« Respuesta #1 en: 6 Junio 2015, 01:27 am »

Si escribes datos binarios en un archivo, no puedes pretender abrir ese archivo con un editor de texto.

Utiliza un editor hexadecimal.

En cualquier caso, un archivo binario no es para ser leído por un humano.

Como dato a parte, si usas ofstream, no tienes que pasarle ios::out. (Ídem para ifstream e ios::in)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear archivo reproducible de DVD a partir de archivo MPG con Canopus ProCoder
Multimedia
aula18 2 5,732 Último mensaje 8 Septiembre 2004, 23:28 pm
por Songoku
Problema al crear CVCD, archivo de 1,36 GB
Multimedia
helejagy 4 1,772 Último mensaje 8 Marzo 2006, 22:09 pm
por helejagy
Problema al crear archivo remotamente
Programación Visual Basic
50l3r 0 1,334 Último mensaje 26 Mayo 2009, 15:08 pm
por 50l3r
[VB2008] Problema con FilePut en Binary Mode
.NET (C#, VB.NET, ASP)
-cave 0 2,240 Último mensaje 19 Septiembre 2011, 19:28 pm
por -cave
Alguien save como crear archivo php igual que el archivo de texto
Windows
BrokerJoker 6 7,208 Último mensaje 17 Mayo 2012, 02:47 am
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines