fgetc
은 한 번에 파일에서 문자를 읽고 문자를 int
유형으로 반환합니다. 파일이 끝나면 fgetc
은 EOF
("아마도"(int)(-1)
)을 반환합니다. 그러나, 나는 너무 자주 보았다 :fgetc가 0xFF를 읽으면 어떻게됩니까?
char ch;
while ((ch = fgetc(fp)) != EOF) { /* Do something. */ }
|<-- PARN -->|
이것은 내가 우려 것입니다 :
fgetc
는OxFF
을 읽고0x000000FF
를 반환합니다.0xFF
은ch
에 할당됩니다.PARN
이char
의 유형- 경우 (
int
에서char
에 캐스팅 유형), 다음은0xFFFFFFFF
으로 승격됩니다. PARN == EOF
이므로 while 루프가 중단됩니다.
우리는 어떻게 OxFF
를 읽고 말할 수 떨어져 EOF
를 반환 (파일에서 읽기 중지)? 그것이 unsigned char
또는 EOF
의 값 중 하나를 리턴 할 수 있기 때문에 fgetc
의 리턴 타입 int
인
이것은'ch'가'char' 대신'int' 타입으로 선언 된 이유입니다. –
그러면 코드가 폭발적입니다. –
대부분 사람들은'ch'를'char'로 선언합니다. –