• Viernes 17 de Abril de 2026, 09:58

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Fx196

Páginas: [1]
1
C/C++ / Problemas al leer archivos
« en: Viernes 31 de Diciembre de 2010, 05:35 »
Hola, estoy intentando leer una especie de mapa de un archivo a un array, pero tengo unas dudas.

Lo estoy haciendo de esta forma:

Código: C++
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     const int x = 17;
  9.     const int y = 12;
  10.     char Map[y][x];
  11.  
  12.     ifstream MapF("Levels/Level00.txt");
  13.  
  14.     if (!MapF)
  15.     {
  16.         cerr << "Error..." << endl;
  17.         exit(1);
  18.     }
  19.  
  20.     int count = 0;
  21.  
  22.     // Leer...
  23.     while (!MapF.eof())    
  24.     {
  25.         MapF.getline( (char*) Map + count, x);
  26.         if (*((char*) Map + count) != '#')            
  27.             count += x;
  28.     }
  29.  
  30.     MapF.close();
  31.  
  32.     // Imprimir...
  33.     for (int i = 0; i < y; i++)
  34.     {
  35.         for (int j = 0; j < x; j++)
  36.         {
  37.             cout << Map[i][j];                
  38.         }
  39.         cout << endl;
  40.     }
  41.  
  42.     return 0;
  43. }
  44.  
  45.  

Los archivos que voy a leer son de este tipo:

Código: Python
  1. #Comentario
  2. #Si me paso de
  3. #16 caracteres
  4. #por línea, o
  5. #dejo una linea
  6. #al final sale
  7. #error.
  8. rrrrrrrrrrrrrrrr
  9. r  r r         r
  10. r  r   r    r  r
  11. r        fr    r
  12. r   r          r
  13. r          r   r
  14. r r   r       rr
  15. r   r    r     r
  16. rt             r
  17. r  r  r   r    r
  18. r  r           r
  19. rrrrrrrrrrrrrrrr
  20.  

Si dejo una línea en blanco al final me sale este error: "Run-Time Check Failure #2 - Stack around the variable 'Map' was corrupted".
Y si me paso de 16 caracteres sale este; "Excepción no controlada en 0x67b00866 en Map.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00250007".
Si cambio el valor de x a 16 (sólo me interesa las 16 primeras columnas) me sale este error "Excepción no controlada en 0x7770159e en Map.exe: 0xC0000005: Access violation".

Supongo que el caracter 17 es el salto de línea o fin de línea, y por eso si aumento uno serían 18 y violaría la memoria o algo así.

Bueno, quisiera saber como puedo hacer para poder tener sólo el array de 12*16, y como puedo mejorar la forma de obtenerlo, sin tener problemas por líneas de mayores de 16 caracteres o líneas en blanco al final.

Estoy usando MS Visual C++ 2008 Express Edition.

Gracias y feliz año nuevo.

Páginas: [1]