| 
	
		|  Autor | Tema: Problema con fstream en c++  (Leído 4,511 veces) |  
	| 
			| 
					
						| anamnesis_92 
								
								 Desconectado 
								Mensajes: 17
								
								
								
								
								
								   | 
 
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. #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 
								Mensajes: 34
								
								
								
								
								
								   | 
 
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 
								Mensajes: 885
								
								 
								http://thehackerway.com/
								
								
								
								
								
								     | 
 
Cual es el error que te esta dando? mandanos una traza o algo... |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| anamnesis_92 
								
								 Desconectado 
								Mensajes: 17
								
								
								
								
								
								   | 
 
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 
								Mensajes: 34
								
								
								
								
								
								   | 
 
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 
								Mensajes: 17
								
								
								
								
								
								   | 
 
Muchisimas gracias por contestar; y aunque no me salen mas fallos sigue sin hacerlo bien. De todas formas gracias. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Problema con eof, de fstream Programación C/C++
 | arcanu | 0 | 3,008 |  22 Noviembre 2010, 05:31 am por arcanu
 |  
						|   |   | Practicando con fstream Programación C/C++
 | anonimo12121 | 3 | 3,326 |  3 Abril 2011, 17:17 pm por anonimo12121
 |  
						|   |   | fstream.h Programación C/C++
 | laephy | 1 | 6,617 |  13 Abril 2011, 23:40 pm por ssaammuu
 |  
						|   |   | Programa usando libreria fstream Programación C/C++
 | @ron | 0 | 5,265 |  14 Abril 2011, 03:01 am por @ron
 |  
						|   |   | Explicacion acerca de fstream Programación C/C++
 | bash | 1 | 2,688 |  24 Mayo 2013, 14:30 pm por bash
 |    |