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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Problema con fstream en c++
« en: 6 Febrero 2012, 20:57 pm »

Buenas a todos, estoy haciendo un juego y una clase me da error, y no se a que se debe; la función debería leer de un archivo números de 5 cifras, después almacenarlos en una matriz de 4 columnas por un numero de filas que es el primer numero del archivo.
A ver si me podéis ayudar a arreglar el código.

Código:
#include <iostream>
#include <fstream>
using namespace std;

class matriz
{
    public:
    int filas;
    char cadena[5];
    int **m;

    void leer(char* s)
    {
        //abrimos
        ifstream fe;
        fe.open(s,ios::in);
        if(!fe)
        {
            cout<<"fallo"<<endl;
        }
        //leemos
        //con la primera linea sacamos las filas
        fe.getline(cadena,6);
        //para pasar la cadena a un int
        filas=(cadena[0]-48)*10000+(cadena[1]-48)*1000+(cadena[2]-48)*100+(cadena[3]-48)*10+(cadena[4]-48);
        //iniciamos la matriz
         m=new int *[filas];
        for(int i=0;i<=filas;i++)
        {
            m[i]=new int[4];
        }
        //seguimos leyendo
        for(int i=0;i<filas;i++)
        {
            for(int j=0;j<4;j++)
            {
                fe.getline(cadena,6);
                m[i][j]=(cadena[0]-48)*10000+(cadena[1]-48)*1000+(cadena[2]-48)*100+(cadena[3]-48)*10+(cadena[4]-48);

            }
        }
        fe.close();
    }

    void destruir()
    {
         for(int i=0;i<=filas;i++)
        {
            delete [] m[i];
        }
        delete [] m;
    }

};

int main()
{
    matriz matriz1;
    matriz1.leer("mapa1.txt");
    matriz1.destruir();
    return 0;
}

Gracias a todos por adelantado.


En línea

Kropt32

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Problema con fstream en c++
« Respuesta #1 en: 9 Febrero 2012, 12:43 pm »

Si en una función vas a pasarle una cadena constante, pon el argumento como constante también 'const char*'...

void leer(const char* s)


En línea

En las pistolas, fíjense, a cada disparo el cañon recula, como asustado por lo que acaba de hacer.
adastra
Endless Learner
Ex-Staff
*
Desconectado Desconectado

Mensajes: 885


http://thehackerway.com/


Ver Perfil WWW
Re: Problema con fstream en c++
« Respuesta #2 en: 9 Febrero 2012, 12:46 pm »

Cual es el error que te esta dando? mandanos una traza o algo...
En línea

anamnesis_92

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Problema con fstream en c++
« Respuesta #3 en: 9 Febrero 2012, 13:37 pm »

Lo primero gracias por responder; he utilizado const y ya compila pero colocando un cout<<m[j] en la linea 38 compruebo que no hace los que esperaba, asi que sigo sin saber donde esta el fallo....
En línea

Kropt32

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Problema con fstream en c++
« Respuesta #4 en: 9 Febrero 2012, 14:18 pm »

En el tratamiento de error al abrir el fichero, muestras "Fallo", sin embargo sigues leyendo, pon un return al menos.

Linea:
for(int i=0;i<=filas;i++)

Esta linea cambiala hasta '< filas', porque si le pones '<= filas', le estás obligando que se meta en una posición de memoria del array no asignada, la última posición de un array es 'tamaño - 1'.

Al final, dentro de la función main(), lees el fichero y a pesar de no saber si se ha leido bien, porque das por hecho que se lee bien, destruyes la clase. y esto provoca un fallo de segmentación porque la matriz no se ha creado.

Es lo que puedo decirte de vista rápida. Pureba a solucionar eso...

El paso a int hay una función que te lo hace todo muy bonito, atoi()
« Última modificación: 9 Febrero 2012, 14:30 pm por Kropt32 » En línea

En las pistolas, fíjense, a cada disparo el cañon recula, como asustado por lo que acaba de hacer.
anamnesis_92

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Problema con fstream en c++
« Respuesta #5 en: 14 Febrero 2012, 11:58 am »

Muchisimas gracias por contestar; y aunque no me salen mas fallos sigue sin hacerlo bien. De todas formas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con eof, de fstream
Programación C/C++
arcanu 0 2,794 Último mensaje 22 Noviembre 2010, 05:31 am
por arcanu
Practicando con fstream
Programación C/C++
anonimo12121 3 2,990 Último mensaje 3 Abril 2011, 17:17 pm
por anonimo12121
fstream.h
Programación C/C++
laephy 1 6,338 Último mensaje 13 Abril 2011, 23:40 pm
por ssaammuu
Programa usando libreria fstream
Programación C/C++
@ron 0 5,024 Último mensaje 14 Abril 2011, 03:01 am
por @ron
Explicacion acerca de fstream
Programación C/C++
bash 1 2,255 Último mensaje 24 Mayo 2013, 14:30 pm
por bash
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines