C++ 파일 내용 출력 관련 질문 드립니다.
제가 지금 과제 때문에 C++로 콘솔영역 주소록 프로그램을 작성하고 있습니다.
프로그램 내용인 즉, 개인 정보를 입력 받으면 파일로 순차저장되고,
이 순차 저장된 내용을 다시 전체 출력도 가능하게 하는 프로그램이지요..
문제는 출력 부분에서 파일에 저장된 내용 중 맨 마지막 내용이 두번 중복 출력
된다는 겁니다.
아래는 출력 함수에 대한 소스입니다.
void Output()
{
char *Name;
char *ID_NUM;
char *Add;
char *HP;
char *Job;
int Age = 0;
int i = 1;
FILE *fp;
Name = (char *) malloc(50);
ID_NUM = (char *) malloc(13);
Add = (char *) malloc(256);
HP = (char *) malloc(15);
Job = (char *) malloc(256);
if((fp = fopen("file.info", "r")) == NULL)
{
cout << "저장한 데이터 파일이 없습니다." << endl;
exit(-1);
}
while(!feof(fp))
{
i++;
fscanf(fp, "%s %s %s %s %s %d", Name, ID_NUM, Add, HP, Job, &Age);
cout << "이름 : " << Name << endl;
cout << "주민등록번호 : " << ID_NUM << endl;
cout << "주소 : " << Add << endl;
cout << "핸드폰 번호 : " << HP << endl;
cout << "직업 : " << Job << endl;
cout << "나이 : " << Age << endl;
cout << "=================================================" << endl;
if(i % 2 == 0)
{
cout << "Press any key....." << endl;
getch();
}
}
fclose(fp);
}
다시 말씀드리면 파일에 맨 마지막 내용이 두번 출력되버린다는겁니다...
이걸 어찌 해결해야 할까요... ㅠㅠㅠㅠ
좀 가르켜 주세요~~ 흑;;
가능성중의 하나.
feof와 fscanf가 정확히 어떻게 동작하는지 몰라서
뭐라 얘기를 못해드리겠지만...
혹시 저장할때 마지막 부분이 두번 저장된건 아닐지...
cout 으로 저장루틴 부분 찍어보심이 어떨가요?
=3=3=3
feof()를 잘 못
feof()를 잘 못 사용하셨군요.
http://www.cinsk.org/cfaqs/html/node14.html#SECTION001410000000000000000
에 가서 12.2를 참고하세요.
C FAQ 의 모든 내용을 읽어 보시면 C 실력을 증진 시키는데 도움이 됩니다.
댓글 달기