숫자와 문자의 행렬 인 input1.txt라는 파일이 있습니다. 각 채터가 1 셀이되도록 2D 배열로 읽고 저장하려고합니다. 여기 내 텍스트 파일입니다 : 여기파일을 2D 배열로 읽어들입니다.
1111S11110
0000010001
110100010d
t001111110
0100000001
0111111101
1111111101
00000D01T1
0111110001
0000E01110
그리고 나의 코드 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Function for finding the array length
int numOfLines(FILE *const mazeFile){
int c, count;
count = 0;
for(;;){
c = fgetc(mazeFile);
if(c == EOF || c == '\n')
break;
++count;
}
return count;
}
// Main Function
int main(int argc, char **argv)
{
// Opening the Matrix File
FILE *mazeFile;
mazeFile = fopen("input1.txt", "r");
if(mazeFile == NULL)
return 1;
int matrixSize = numOfLines(mazeFile);
// Reading text file into 2D array
int i,j;
char mazeArray [matrixSize][matrixSize];
for(i=0;i<matrixSize;i++){
for(j=0;j<matrixSize;j++){
fscanf(mazeFile,"%c", &mazeArray[i][j]);
}
}
for(i=0;i<matrixSize;i++){
for(j=0;j<matrixSize;j++){
printf("%c",mazeArray[i][j]);
}
}
fclose(mazeFile);
return 0;
}
내가 그들을 인쇄 할 때 내 콘솔 출력은 비슷하지만 :
0000010001
110100010d
t001111110
0100000001
0111111101
1111111101
00000D01T1
0111110001
[email protected]
그것을 읽지 않습니다 보인다 첫 번째 줄,하지만 색인의 측면에서 나는 그것이 괜찮다고 생각합니다. 나는 C.에 새로운 사람도 도와 주시겠습니까? 미리 감사드립니다. 몇 가지 문제는 여기에있다
'numOfLines'은 잘못된 이름이며, 첫 번째 줄의 문자 수를 계산합니다. 그리고 그러므로, 그들을 읽습니다! 독서를 계속한다면 처음부터 다시 시작하는 이유는 무엇이라고 생각합니까? 마법? ['rewind()'] (https://linux.die.net/man/3/rewind)를 시도하십시오. –
'numOfLines()'함수는 파일을 끝까지 읽습니다. 다시 읽으려면 시작 부분으로 돌아갈 필요가 있습니다 (일반 파일은 가능하지만 가능한 다른 종류의 스트림은 찾을 수 없음). –
@JohnBollinger **이 코드의 혼란을 불러 일으키는 ** 마지막까지 ** 읽지는 않습니다 ... –