[질문] while(!feof(fp)) { fscanf();}
글쓴이: gostop / 작성시간: 월, 2004/05/17 - 4:10오전
dir2html과 유사한 걸 만들고 있는데요..
system("ls -l | grep ^d | awk '{print $9}' > dirlist"); fp=fopen("./dirlist", "r"); while(!feof(fp)) { fscanf(fp, "%s", dir); fprintf(..........); }
대충 이런 식으로 만들었구요..
현재 디렉토리 아래 디렉토리가 a, b, c, d 이렇게 있다고 하면..
이 프로그램을 실행해서 fprintf()에 의해 만들어진 파일을 보면 a, b, c, d, d 이렇게 d가 2번 찍혀있습니다.
왜 이런 현상이 발생하는지, 또 어떻게 해결해야 하는지 조언 부탁드립니다.
Forums:
#include <stdio.h>#include <s
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char dir[100];
system("ls -l | grep ^d | awk '{print $9}' > dirlist");
fp=fopen("./dirlist", "r");
while(!feof(fp)) {
fscanf(fp, "%s\n", dir);
printf("%s\n", dir);
}
fclose(fp);
}
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
입력 스트림이 파일 끝에 이르렀다고 해서 feof()로 바로 알 수는 없
입력 스트림이 파일 끝에 이르렀다고 해서 feof()로 바로 알 수는 없습니다.
입력에 실패한 원인이 파일 끝 때문인지를 알려줄 뿐이죠.
다음처럼 fscanf()의 리턴값을 써서 입력이 성공했는지를 바로 알아내야 합니다.
ps. feof()는 보통 프로그램에서는 쓸 일이 거의 없다는 얘기를 어디선가 들은 것 같군요.
댓글 달기