저는 C 프로그래밍에 대한 책을 읽고 있는데 예제를 이해하지 못합니다. 또는 더 정확하게 나는 왜 그것이 작동해서는 안되기 때문에 그것이 효과가 있는지 이해하지 못한다.fgetc 프로그램 이해
코드는 간단하며 텍스트 파일의 내용을 읽고 출력 영역에 출력합니다. 내가 이해할 수있는 한, 나는 단지 한 번만 int를 읽으므로 while 루프 안에 있어야한다고 생각하겠다. 현재 출력 된 후 다음 int를 읽어야합니다. 글쎄,이 코드는 실제로 잘 작동하므로 누군가 내 잘못을 설명 할 수 있기를 바랍니다. 감사!
#include <stdio.h>
int main(int argc, char *argv[]) {
FILE *stream;
char filename[67];
int ch;
printf("Please enter the filename?\n");
gets(filename);
if((stream = fopen(filename, "r")) == NULL) {
printf("Error opening the file\n");
exit(1);
}
ch = fgetc(stream);
while (!feof(stream)) {
putchar(ch);
ch = fgetc(stream);
}
fclose(stream);
}
이가 아닌 좋은 품질의 코드. 답에서 볼 수 있듯이 'feof'를 전혀 피할 수 있습니다. 여전히'feof'를 사용하면 두 개의'fgetc'을 사용할 필요가 없습니다 : 충분해야합니다'while (! feof (stream)) putchar (fgetc (stream));' –
사실,이 코드는 1 바이트 스트림 !!! –
모든 답변을 주셔서 감사합니다. 모든 답변을 받아 들일 수 있기를 바랍니다. – Linus