@BeSnoMo
Выпускник

Как считать массив из файла в си?

int pole[n][m];
FILE *f;
f = fopen("Map 1.txt", "r");

for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
fscanf(f, "%d", &a[i][j]);
pole[i][j] = a[i][j];
fprintf(f,"%d",pole[i][j]);
}
printf("\n");
}
}
пытаюсь считать выводит пустоту, массив вот.
{{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
  • Вопрос задан
  • 1367 просмотров
Решения вопроса 1
@d_ilyich
1. Ты читаешь всё подряд как числа, а в файле у тебя есть нецифровые символы
2. Ты прочитанное сразу печатаешь обратно в файл.

Если хочешь использовать fscanf, то можно, например, так:
char c;

  for (int i = 0; i < n; i++)
  {
    for (int j = 0; j < m; j++)
    {
      fscanf(f, "%d", &pole[i][j]);
      fscanf(f, "%c", &c);
      printf("%d ",pole[i][j]);
    }
    printf("\n");
  }


Только сначала отформатировать файл, чтобы числа через запятую шли и без остального мусора.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы