Wczytywanie mapy z pliku do tablicy dwuwymiarowej

0

Witam, probuje wczytac mape wygladająca jak jak labirynt z hashtagow (hashe i spacje)
w rozmiarze 20x20, ale w programie nic sie nie wykonuje,

char tab[20][20];
			ifstream plik("map.txt");
			plik.open("map.txt");
			for (int i = 0; i < 20; ++i) {
				for (int j = 0; j < 20; ++i) {
					plik >> tab[i][j];
				}
			}
			for (int i = 0; i < 20; ++i) {
				for (int j = 0; j < 20; ++j) {
					cout << tab[i][j];
				}
				cout << endl;
			}
			plik.close();
4
            for (int i = 0; i < 20; ++i) {
                for (int j = 0; j < 20; ++i) {// <--- ++i tu masz
                    plik >> tab[i][j];
                }
            }
0

rzeczywiscie w tym byl problem, ale teraz zamiast hashtagow albo czegokolwiek innego wypisuje sie dziwny wzorek...

0

W pliku wejściowym nie masz żadnych innych znaków? Np. nowej linii?

edit: bez znaczenia, w końcu stream i tak je pomija domyślnie.

0

sa znaki nowej lini, i spacje
Tylko ze i tak nie wazne co jest napisane w pliku wyswietla sie w kazdym miejscy to samo, czyli jakis dziwny znak

0

Może sprawdź, czy plik poprawnie się otworzył. Tu masz przykład http://www.cplusplus.com/reference/fstream/ifstream/open/
Całość powinna wyglądać tak:

  char tab[20][20];
  ifstream plik; // tu zmiana
  plik.open("map.txt", std::ifstream::in); // tu zmiana
  for (int i = 0; i < 20; ++i) {
    for (int j = 0; j < 20 && plik.good(); ++j) // tu zmiana
      plik >> tab[i][j];

  }

  for (int i = 0; i < 20; ++i) {
    for (int j = 0; j < 20; ++j)
      cout << tab[i][j];

    cout << endl;
  }

  plik.close();

  return 0;

Problem w tym, że u Ciebie w kodzie jest

            ifstream plik("map.txt"); // tu konstruktor otwiera plik
            plik.open("map.txt"); // a tu otwierasz go ręcznie

Czytaj dokumentacje ;)
http://www.cplusplus.com/reference/fstream/ifstream/ifstream/

1 użytkowników online, w tym zalogowanych: 0, gości: 1