PPM 파일에서 2 차원 픽셀 배열을 입력 할 때 너비와 길이가 5 인 것을 테스트하고 있습니다. 또한 ppm 파일에서 rgb는 3 가지 색상 값을 가지고 있습니다. 이 코드를 작성하기 전에이 코드를 잊어 버렸지 만 문제는 여전히 업데이트 된 상태로 유지되며 문제는 여전히 같은 방식으로 존재합니다. 문제를 격리시키기 위해 배열에 문제를 단순화했습니다. 내가 말할 수있는 것에서는 문자를 삭제하고 일부는 새로운 줄 문자로 대체하는 것 같습니다. 왜 이런 일이 일어나고 있는지에 대한 통찰력은 크게 감사 할 것입니다. 만약 내가 뭔가를 추가하는 것을 잊어 버리면, 내가 알고있는대로 바로 이것을 업데이트 할 것입니다. 내가 사용하고fetchc for 루프를 사용하여 2D 픽셀 맵을 읽을 때
#include <stdio.h>
int main(int args, char *argv[]) {
int w = 5, h = 5;
FILE *f = fopen(argv[1], "rb");
int c = 'a';//I am setting this so as to avoid the off chance of c being defined as EOF
for(int i = 0; i < h && c != EOF; i++) {
for(int j = 0; j < w && (c = fgetc(f)) != EOF; j++) printf("%c", c);
fgetc(f);//To remove the '\n' character I am not using fgets because it stops at '\n' character and it is possible for a rgb value to be == to '\n'
printf("\n");
}
fclose(f);
return 0;
}
테스트 파일 :
12345
abcde
12345
abcde
12345
출력 내가 점점 오전 : 사전에
12345
abcd
123
5
ab
de
1
감사합니다!
편집 :이 10 명령 프롬프트 창에서 실행되는
나는 이것이 Windows 머신에있을 거라고 생각 하나? 또는 최소한 입력 파일에 crlf 행 끝이 있습니다. –
그래, '누락'문자가 각 행의 한 위치 뒤로 이동했기 때문에 여분의'fgetc '이 그것을 버리고 있음을 의미합니다. – kdopen
사실, 바이너리 모드로 열어도 파일이 실제로 Windows 줄 끝이있는 텍스트 파일 인 것처럼 보입니다. 힌트, 디버거 사용, 문자 자체 대신 ASCII 값 읽기, 한 줄에 너무 많은 것들을 쌓아 두지 않기 때문에 디버그하기가 쉽습니다. – hyde