2014-12-20 2 views
-1

Итак, для недавней проблемы 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.

Я также не знаю, как реагировать на комментарии

+2

print 'N' и' M' и сказать, что вывод – Rizier123

+0

Почему вы не используете массив символов, если вы читаете символы? –

+4

Как насчет новых линий? Кажется, у вас есть новые строковые символы (5 строк). Коды '\ n' считаются следующим символом'% c'. Даже в конце каждой строки может быть '\ r \ n' (еще 2 символа). – i486

ответ

0

\n также char и читается fscanf. Для того, чтобы пропустить \n попробовать это:

fscanf(fin," %c", &c); 
//   ^A space before %c can skip any number of white-spaces 

и использовать printf("\n"); заявление после внутреннего цикла.

+0

Да, это сработало. Итак, пространство перед форматированием может пропускать любое количество пробелов? Ну, это полезно. Почему это? –

+0

Нет. Это работает только для '% c'. Не для других спецификаций формата. – haccks

Смежные вопросы