Итак, для недавней проблемы USACO пользователь должен был прочитать в файле с Row Col, для первой строки, а затем следовать за строками с рядом или # или. При использовании C, чтобы попробовать это, я обнаружил, что мой массив, который хранит содержимое файла, заканчивается преждевременно, на полпути через четвертую строку из 5-строчного файла. При выполнении ошибок нет ошибок.Почему эта петля заканчивается раньше?
#include <stdio.h>
int main()
{
FILE *fin = fopen("crosswords.in", "r");
FILE *fout = fopen("crosswords.out","w");
int N, M;
fscanf(fin,"%d %d", &N, &M);
int arr[N][M];
char c;
int i,j;
for (i = 0; i < N;i++) {
for (j = 0; j < M; j++) {
fscanf(fin,"%c", &c);
arr[i][j] = c;
printf("%c", c);
}
}
return 0;
}
Это код. Файл:
5 3
...
#..
...
..#
.##
Выход:
...
#..
...
..
первая линия новой строки, но блок кода не показывает его
Почему код остановки рано? EDITS:
Когда я печатаю N и M, я получаю 5 и 3 Я использую массив 2d, потому что вы должны выполнять вычисления в зависимости от позиции. Проблема заключается в следующем: http://usaco.org/index.php?page=viewproblem2&cpid=488.
Я также не знаю, как реагировать на комментарии
print 'N' и' M' и сказать, что вывод – Rizier123
Почему вы не используете массив символов, если вы читаете символы? –
Как насчет новых линий? Кажется, у вас есть новые строковые символы (5 строк). Коды '\ n' считаются следующим символом'% c'. Даже в конце каждой строки может быть '\ r \ n' (еще 2 символа). – i486