Foros del Web » Programación para mayores de 30 ;) » C/C++ »

error de segmentación (archivo de texto) ayuda c++

Estas en el tema de error de segmentación (archivo de texto) ayuda c++ en el foro de C/C++ en Foros del Web. amigos... estoy leyendo un archivo binario de la siguiente forma: Código: int main () { fstream archivoRegistrosBinarios("Usuarios.dat", ios::in | ios::app | ios::out |ios::binary);//abrimos un archivo ...
  #1 (permalink)  
Antiguo 31/12/2010, 00:21
 
Fecha de Ingreso: diciembre-2010
Mensajes: 8
Antigüedad: 13 años, 4 meses
Puntos: 0
error de segmentación (archivo de texto) ayuda c++

amigos... estoy leyendo un archivo binario de la siguiente forma:

Código:
int main () 
{
   fstream archivoRegistrosBinarios("Usuarios.dat", ios::in | ios::app | ios::out |ios::binary);//abrimos un archivo en modo añadidura, escritura y modo binario
    if (!archivoRegistrosBinarios)//si no existe
    {
        //ofstream archivoManipulacion("Usuarios.dat", ios::out | ios::binary);//crear el archivo
        if (!archivoRegistrosBinarios) //si no se pudo crear... salimos del programa
        {
            cerr << endl << "No se pudo crear o abrir el archivo..." << endl;
            exit(1);
        }
    }

  imprimeArchivoTexto(archivoManipulacion);

}

imprimeArchivoTexto(fstream &archivoaLeer)
{
   ofstream archivoTexto("Usuarios.txt", ios::out);
   if (!archivoTexto){
      cerr << endl << "No se pudo crear el archivo de texto." << endl;
      exit(1);
   }
   archivoTexto << endl << "Posición\tNombre\t\t\t\t\t\tGrupo\t\tAciertos\tErrores\tCalificación"<< endl;
   archivoaLeer.seekg(0);
   datosArchivar datosTexto;
   archivoaLeer.read( reinterpret_cast <char *>(&datosTexto),sizeof(datosArchivar));
   while(!archivoaLeer.eof())
   {
      archivoaLeer.read( reinterpret_cast <char *>(&datosTexto),sizeof(datosArchivar));
      archivoTexto << datosTexto.posicion << "\t\t";
      archivoTexto << datosTexto.nomb << "\t";
      archivoTexto << datosTexto.grup << "\t";
      archivoTexto << datosTexto.acier << "\t\t";
      archivoTexto << datosTexto.error << "\t";
      archivoTexto << datosTexto.calif << endl;
      archivoaLeer.read( reinterpret_cast <char *>(&datosTexto),sizeof(datosArchivar));
   }

}
Al momento de correr este código.. :( me marca un error "fallo de segmentación" y la verdad no sé que estoy haciendo mal :( alguien tiene idea de que pueda estar haciendo mal?? :) se agradece su ayuda :)!!
  #2 (permalink)  
Antiguo 31/12/2010, 00:38
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: error de segmentación (archivo de texto) ayuda c++

Estas pasando el archivo por valor, y no por referencia.
Cambialo y nos dices si te funciono.

Para pasarlo por referencia, solamente agrega un & al argumento a esta linea:

imprimeArchivoTexto(archivoManipulacion);

Para que quede:

imprimeArchivoTexto(&archivoManipulacion);

y esto cambialo a:
imprimeArchivoTexto(fstream *archivoaLeer)
  #3 (permalink)  
Antiguo 31/12/2010, 00:55
 
Fecha de Ingreso: diciembre-2010
Mensajes: 8
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: error de segmentación (archivo de texto) ayuda c++

HOla Gracias por tu ayuda Alan!! :), hice esos cambios, pero el compilador me marca el siguiente error.:


/home/c4chus/Projects/proyectos-codeblocks/proyectofinal/listaUsuarios.cpp||In member function ‘void listaUsuarios::imprimeArchivoTexto(std::fstream*)’ :|
/home/c4chus/Projects/proyectos-codeblocks/proyectofinal/listaUsuarios.cpp|183|error: request for member ‘seekg’ in ‘archivoaLeer’, which is of non-class type ‘std::fstream*’|
/home/c4chus/Projects/proyectos-codeblocks/proyectofinal/listaUsuarios.cpp|185|error: request for member ‘read’ in ‘archivoaLeer’, which is of non-class type ‘std::fstream*’|
/home/c4chus/Projects/proyectos-codeblocks/proyectofinal/listaUsuarios.cpp|186|error: request for member ‘eof’ in ‘archivoaLeer’, which is of non-class type ‘std::fstream*’|
/home/c4chus/Projects/proyectos-codeblocks/proyectofinal/listaUsuarios.cpp|188|error: request for member ‘read’ in ‘archivoaLeer’, which is of non-class type ‘std::fstream*’|
/home/c4chus/Projects/proyectos-codeblocks/proyectofinal/listaUsuarios.cpp|195|error: request for member ‘read’ in ‘archivoaLeer’, which is of non-class type ‘std::fstream*’|
||=== Build finished: 5 errors, 63 warnings ===|

por cierto... de la misma forma en que pretendo escribir el archivo de texto con:

imprimeArchivoTexto(archivoManipulacion);

estoy creando el archivo binario Usuarios.dat que menciono en el código anterior D;!!! espero me puedas ayudar :) de antemano gracias
  #4 (permalink)  
Antiguo 31/12/2010, 15:17
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: error de segmentación (archivo de texto) ayuda c++

#include <fstream.h>
#include <iostream.h>

Agrega esas 2 librerias te hacen falta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:59.