본문내용
+)// 선택된 멤버 내용 초기화
{
member[Snum].name[j] = \'\\0\';
member[Snum].number[j/2] = \'\\0\';// .number 변수는 사이즈[10] 이므로
}
member[Snum].regi_flag = NO;
printf(\"\\n삭제되었습니다.\\n\\n\\n\");
}
void Search(void)
{
char Sname[20];
int j, Snum = 100;
printf(\"\\n[SEARCH]\\n\\n\");
printf(\"검색 할 멤버의 이름을 입력하세요 : \");
fgets(Sname, sizeof(char) * 20, stdin);
for (j = 0; j < 30; j++)
{
if (strcmp(member[j].name,Sname) == 0) Snum = j;// 입력된 문자열과 등록된 이름이 같으면
}
if (Snum != 100)
{
Dellf(member[Snum].name);// 문자열의 \'\\n\'까지 출력되는것을 방지하기 위해
Dellf(member[Snum].number);
printf(\"Name : %s \\n\", member[Snum].name);
printf(\"Tel Number : %s \\n\\n\", member[Snum].number);
Addlf(member[Snum].name);// \'\\n\' 복원, 그래야 검색이 되므로
Addlf(member[Snum].number);
}
else printf(\"\\n찾으시는 회원이 없습니다.\\n\\n\\n\");
}
void Print(void)
{
int j;
printf(\"\\n\\n[Print All Data]\\n\");
for (j = 0; j < 30; j++)
{
if (member[j].regi_flag == YES)
{
Dellf(member[j].name);// 문자열의 \'\\n\'까지 출력되는것을 방지하기 위해
Dellf(member[j].number);
printf(\"Name : %s / \", member[j].name);
printf(\"Tel : %s \\n\", member[j].number);
Addlf(member[j].name);// \'\\n\' 복원, 그래야 검색이 되므로
Addlf(member[j].number);
}
}
printf(\"\\n\\n\");
}
void Regi_flag_clear(void)// member.flag = NO 로 초기화, 초기에 등록여부를 모두 \'아니오\'로....
{
int j;
for (j = 0; j < 30; j++)
{
member[j].regi_flag = NO;// 아니오
}
}
void Record(void)
{
int j;
int state;
FILE* fp;
fopen_s(&fp,\"ex7.txt\", \"wt\");// 데이터 파일 개방, 쓰기전용
if (fp == NULL) {
printf(\"file open error! \\n\");
abnormal_end = YES;
return;
}
fputs(\"@\", fp);// 데이터가 저장되어 있다는 표식 \'@\'(파일의 처음에 위치)
for (j = 0; j < 30; j++)// 입력 데이터 파일에 저장
{
fputs(member[j].name, fp);
fputs(member[j].number, fp);
fputc(member[j].regi_flag, fp);
fputs(\"\\n\", fp);// 구분을 위해 line feed
}
state = fclose(fp);// 파일 닫기
if (state != 0)
{
printf(\"file close error! \\n\");
abnormal_end = YES;
return;
}
}
void Data_load(void)
{
char ch;
int j,k;
int state;
FILE* fp;
fopen_s(&fp, \"ex7.txt\", \"rt\");// 파일 개방 , 읽기 전용
if (fp == NULL) {
printf(\"로드파일 없음 \\n\");
return;
}
ch = fgetc(fp);// 파일의 첫 문자를 읽어서
if (ch != \'\\0\')// 첫문자가 null이 아니라면
{
for (j = 0; j < 30; j++)
{
k = 0;
do {// \\n 혹은 EOF 가 나올때까지 이름 데이터 읽기
ch = fgetc(fp);
member[j].name[k++] = ch;
} while (ch != \'\\n\' && ch != EOF);
k = 0;
do {// \\n 혹은 EOF 가 나올때까지 번호 데이터 읽기
ch = fgetc(fp);
member[j].number[k++] = ch;
} while (ch != \'\\n\' && ch != EOF);
ch = fgetc(fp);// 등록여부 데이터 읽기
member[j].regi_flag = ch;
ch = fgetc(fp);// 바로 뒤에 붙은 \'\\n\' 버리기
}
}
state = fclose(fp);// 파일 폐쇄
if (state != 0)
{
printf(\"file close error! \\n\");
abnormal_end = YES;
return;
}
}
int main(void)
{
Regi_flag_clear();
Data_load();
int choice;
while (1)
{
printf(\"---------Menu----------\\n\");
printf(\" 1. Insert\\n\");
printf(\" 2. Delete\\n\");
printf(\" 3. Search\\n\");
printf(\" 4. Print All\\n\");
printf(\" 5. Exit\\n\");
printf(\"\\nChoose the item :\");
scanf_s(\"%d\", &choice);
getchar();
switch (choice)
{
case 1:
Insert();
break;
case 2:
Delete();
break;
case 3:
Search();
break;
case 4:
Print();
break;
case 5:
Record();
if (abnormal_end == YES) return 1;
else return 0;
default:
printf(\"잘못 입력하셨습니다.\\n\\n\");
}
}
}
- 결과
{
member[Snum].name[j] = \'\\0\';
member[Snum].number[j/2] = \'\\0\';// .number 변수는 사이즈[10] 이므로
}
member[Snum].regi_flag = NO;
printf(\"\\n삭제되었습니다.\\n\\n\\n\");
}
void Search(void)
{
char Sname[20];
int j, Snum = 100;
printf(\"\\n[SEARCH]\\n\\n\");
printf(\"검색 할 멤버의 이름을 입력하세요 : \");
fgets(Sname, sizeof(char) * 20, stdin);
for (j = 0; j < 30; j++)
{
if (strcmp(member[j].name,Sname) == 0) Snum = j;// 입력된 문자열과 등록된 이름이 같으면
}
if (Snum != 100)
{
Dellf(member[Snum].name);// 문자열의 \'\\n\'까지 출력되는것을 방지하기 위해
Dellf(member[Snum].number);
printf(\"Name : %s \\n\", member[Snum].name);
printf(\"Tel Number : %s \\n\\n\", member[Snum].number);
Addlf(member[Snum].name);// \'\\n\' 복원, 그래야 검색이 되므로
Addlf(member[Snum].number);
}
else printf(\"\\n찾으시는 회원이 없습니다.\\n\\n\\n\");
}
void Print(void)
{
int j;
printf(\"\\n\\n[Print All Data]\\n\");
for (j = 0; j < 30; j++)
{
if (member[j].regi_flag == YES)
{
Dellf(member[j].name);// 문자열의 \'\\n\'까지 출력되는것을 방지하기 위해
Dellf(member[j].number);
printf(\"Name : %s / \", member[j].name);
printf(\"Tel : %s \\n\", member[j].number);
Addlf(member[j].name);// \'\\n\' 복원, 그래야 검색이 되므로
Addlf(member[j].number);
}
}
printf(\"\\n\\n\");
}
void Regi_flag_clear(void)// member.flag = NO 로 초기화, 초기에 등록여부를 모두 \'아니오\'로....
{
int j;
for (j = 0; j < 30; j++)
{
member[j].regi_flag = NO;// 아니오
}
}
void Record(void)
{
int j;
int state;
FILE* fp;
fopen_s(&fp,\"ex7.txt\", \"wt\");// 데이터 파일 개방, 쓰기전용
if (fp == NULL) {
printf(\"file open error! \\n\");
abnormal_end = YES;
return;
}
fputs(\"@\", fp);// 데이터가 저장되어 있다는 표식 \'@\'(파일의 처음에 위치)
for (j = 0; j < 30; j++)// 입력 데이터 파일에 저장
{
fputs(member[j].name, fp);
fputs(member[j].number, fp);
fputc(member[j].regi_flag, fp);
fputs(\"\\n\", fp);// 구분을 위해 line feed
}
state = fclose(fp);// 파일 닫기
if (state != 0)
{
printf(\"file close error! \\n\");
abnormal_end = YES;
return;
}
}
void Data_load(void)
{
char ch;
int j,k;
int state;
FILE* fp;
fopen_s(&fp, \"ex7.txt\", \"rt\");// 파일 개방 , 읽기 전용
if (fp == NULL) {
printf(\"로드파일 없음 \\n\");
return;
}
ch = fgetc(fp);// 파일의 첫 문자를 읽어서
if (ch != \'\\0\')// 첫문자가 null이 아니라면
{
for (j = 0; j < 30; j++)
{
k = 0;
do {// \\n 혹은 EOF 가 나올때까지 이름 데이터 읽기
ch = fgetc(fp);
member[j].name[k++] = ch;
} while (ch != \'\\n\' && ch != EOF);
k = 0;
do {// \\n 혹은 EOF 가 나올때까지 번호 데이터 읽기
ch = fgetc(fp);
member[j].number[k++] = ch;
} while (ch != \'\\n\' && ch != EOF);
ch = fgetc(fp);// 등록여부 데이터 읽기
member[j].regi_flag = ch;
ch = fgetc(fp);// 바로 뒤에 붙은 \'\\n\' 버리기
}
}
state = fclose(fp);// 파일 폐쇄
if (state != 0)
{
printf(\"file close error! \\n\");
abnormal_end = YES;
return;
}
}
int main(void)
{
Regi_flag_clear();
Data_load();
int choice;
while (1)
{
printf(\"---------Menu----------\\n\");
printf(\" 1. Insert\\n\");
printf(\" 2. Delete\\n\");
printf(\" 3. Search\\n\");
printf(\" 4. Print All\\n\");
printf(\" 5. Exit\\n\");
printf(\"\\nChoose the item :\");
scanf_s(\"%d\", &choice);
getchar();
switch (choice)
{
case 1:
Insert();
break;
case 2:
Delete();
break;
case 3:
Search();
break;
case 4:
Print();
break;
case 5:
Record();
if (abnormal_end == YES) return 1;
else return 0;
default:
printf(\"잘못 입력하셨습니다.\\n\\n\");
}
}
}
- 결과
소개글