531
2016-05-18 22:47:03
0
한번 정리 해봣는데 확인해보시고 테스트 해보세요 ㅎㅎ 'ㅡ'/
#include<stdio.h>
// 공부 하실 때는 아래 warning disable 구문은 빼고 하시는게 좋아요 'ㅡ'/
#pragma warning(disable:4996)
struct information
{
char name[100];
char writer[50];
char no[5];
}info[100];
void information();
void enrollment();
void delete();
void search();
// info_index는 파일을 읽어 올 시 몇 개의 파일을 읽어 왓는지에 대한 인덱스 입니다.
int info_index;
int main()
{
int menu_index;
while(true) // infinite loop
{
printf("무슨 작업을 하시겠습니까?n 1.자료현황n 2.자료등록n 3.자료삭제n 4.자료검색n 그외. 종료 ->");
scanf("%d%*c", &menu_index);
switch (menu_index)
{
case 1:
information();
break;
case 2:
enrollment();
break;
case 3:
delete();
break;
case 4:
search();
break;
default:
return 0;
}
}
return 0;
}
void information()
{
// 자료를 처음부터 읽는 것 이기 때문에 0 으로 초기화
info_index = 0;
FILE* stream1;
stream1 = fopen("information.txt", "r");
if (stream1 == NULL)
{
printf("파일열기 에러n");
return ; // main 에서 무한 루프이기 때문에 여기서는 그냥 return
}
printf("책 제목 저자 일련번호n");
while (true)
{
int result = fscanf(stream1, "%s %s %sn", info[info_index].name, info[info_index].writer, info[info_index].no);
if (result != 3) // 파일을 모두 읽거나 문제가 발생될 경우 종료
return 0;
// 이 부분은 정상적으로 읽은 부분이기 때문에 출력
printf("%s %s %sn", info[info_index].name, info[info_index].writer, info[info_index].no);
// 하나가 추가 되었기 때문에 info_index 를 하나 증가 시켜 줍니다.
info_index = info_index + 1;
}
// 모든 작업이 끝낫기 때문에 파일을 닫아 줍니다
fclose(stream1);
return ;
}
void enrollment()
{
FILE* stream2;
stream2 = fopen("information.txt", "a");
if (stream2 == NULL)
{
printf("파일열기 에러n");
return ; // main 에서 무한 루프이기 때문에 여기서는 그냥 return
}
// 파일에 쓰는 것 이기 때문에 임시 버퍼를 활용합니다.
char name[100];
char writer[50];
char no[5];
printf("책의 제목:");
scanf("%s", name);
fflush(stdin);
printf("책의 저자:");
scanf("%s", writer);
fflush(stdin);
printf("일련 번호:");
scanf("%s", no);
fflush(stdin);
fprintf(stream2, "%s %s %sn", name, writer, no);
fclose(stream2);
return ;
}
void delete()
{
}
void search()
{
}