그래서 최근의 USACO 문제의 경우 사용자는 Row Col 파일을 첫 번째 줄에 읽은 다음 그 뒤에 # 또는 s의 줄이있는 줄을 읽어야했습니다. 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
...
#..
...
..#
.##
출력은? 편집 :
N과 M을 인쇄하면 5와 3이됩니다. 위치를 기반으로 계산을 수행해야하므로 2 차원 배열을 사용하고 있습니다. 문제는 http://usaco.org/index.php?page=viewproblem2&cpid=488입니다.
나는 또한 의견
'N'과 'M'을 출력하고 출력이 무엇입니까 – Rizier123
왜 문자를 읽는 중 문자 배열을 사용하지 않습니까? –
새 라인은 어떻습니까? 새 줄 문자 (5 줄)가있는 것 같습니다. 그리고'\ n' 코드는 다음 문자'% c'로 읽혀집니다. 각 행의 끝에는 \ r \ n이있을 수 있습니다 (2 문자 더). – i486