C 프로그램에서 이진 데이터를 read()로 읽으려고하는데 EOF 테스트가 작동하지 않습니다. 대신 파일의 마지막 비트를 영원히 계속 읽습니다.read()를 사용하여 파일 끝까지 데이터를 읽는 방법?
#include <stdio.h>
#include <fcntl.h>
int main() {
// writing binary numbers to a file
int fd = open("afile", O_WRONLY | O_CREAT, 0644);
int i;
for (i = 0; i < 10; i++) {
write(fd, &i, sizeof(int));
}
close(fd);
//trying to read them until EOF
fd = open("afile", O_RDONLY, 0);
while (read(fd, &i, sizeof(int)) != EOF) {
printf("%d", i);
}
close(fd);
}
아니 imediate 문제 (0을 반환하지 EOF를 읽기)하지만 당신은 아마 컴파일의 습관을한다고'GCC -Wall', 경고의 주를 가지고 (및 수정 :
도 참조하십시오!),'#include'를 사용한다. –
조언을 주셔서 고마워, 내가 어디에 내가 필요하지만 내 벽면을 사용하여 내 주요 코드에 포함되어 있습니다 :) – sekmet64