Распечатать 2D-массив из файла в C ++

0

У меня есть файл Map.txt, и внутри этого файла сохраняется 2D-массив, но всякий раз, когда я пытаюсь напечатать свой 2D-массив в моей основной программе, я получаю сумасшедшие цифры. Код:

  cout << "Would you like to load an existing game? Enter Y or N: " << endl;
cin >> Choice;
if (Choice == 'Y' || Choice == 'y')
{
   fstream infile;
   infile.open("Map.txt");
   if (!infile)
       cout << "File open failure!" << endl;
   infile.close();
}
if (Choice == 'N' || Choice == 'n')
    InitMap(Map);

Карта сохранена в файле:

********************
********************
********************
********************
********************
********************
********************
**********S*********
*****************T**
********************

Вывод при запуске программы:

Would you like to load an existing game? Enter Y or N: 
y
88???????'Ė
?(?a????
??_?
?дa??g  @
 Z???@

        ?
 ?a??p'Ė??p]?
??_???'Ė?
??a??#E@??
??_??
  • 3
    Пожалуйста, покажите, как именно выглядит файл, а также соответствующую часть кода, которая фактически пытается напечатать.
  • 0
    Вы показали код открытия и закрытия файла. Поместите код чтения двумерного массива из файла и укажите, какой вывод вы получаете.
Показать ещё 8 комментариев
Теги:
arrays
file

2 ответа

1

Я собираюсь помешать предположить, что вы хотите прочитать файл в двумерном массиве символов. Я также предполагаю для простоты, что вы знаете, сколько строк и столбцов вам нужно. Цифры ниже приведены только для иллюстрации.

#define NUM_ROWS 10
#define NUM_COLS 20    

// First initialize the memory
char** LoadedMap = new char*[NUM_ROWS];
for (int i = 0; i < NUM_ROW; i++)
   LoadedMap[i] = new char[NUM_COLS];

// Then read one line at a time
string buf;
for (int i = 0; i < NUM_ROW; i++) {
   getline(infile, buf);
   memcpy(LoadedMap[i], buf.c_str(), NUM_COL);
}

// Sometime later, you should free the memory


for (int i = 0; i < NUM_ROW; i++)
   delete LoadedMap[i];

delete LoadedMap;
0

Этот код покажет ваш файл Map.txt в консоли. Не забудьте указать точный путь для открытия файла.

#include <stdio.h>

const int MAX_BUF = 100001;
char buf[MAX_BUF];

int main()
{
    FILE *fp = fopen("Map.txt","r"); //give the full file path here.
    while( fgets(buf,MAX_BUF,fp) )
    {
        puts(buf);
    }
    return 0;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню