readfile에서 두개를 불러와야되는데 계속 아래있는 dd.txt파일만 읽혀지는것 같더라구요 ㅠㅠ
동시에 여러개의 파일을 읽어와서 검색이나, 삭제구문에서 txt파일을 선택해서 검색하거나 삭제하는 방법을 해야되는 어제부터 막혀서 진도가 안나가고있어요 도와주세요 ㅠㅠ
#include <stdio.h>
#include <string.h>
#define MAX 100
typedef struct
{
char name[20];
char tel[20];
char address[100];
}Member;
void DeleteMember(Member member[], int * pCount)//삭제
{
char name[20];
int i, j;
char searchCondition[20];
FILE *fp, *fp1;
while(1) //무한반복
{
printf("입력할 파일명을 입력하세요(예: *.txt):"); //파일명을 입력받을 문구 출력
scanf("%s",searchCondition); //입력받은 문자열을 filename에 저장
fp=fopen(searchCondition,"w+t"); //파일을 읽기전용으로 연다
fp1=fopen(searchCondition,"w+t"); //파일을 읽기전용으로 연다
if(fp == NULL || fp1 == NULL) //열린 파일이 없으면
printf("해당 파일이 없습니다."); //에러문구 출력하고 다시 반복
else //아니면
break; //무한반복 탈출
fclose(fp);
fclose(fp1);
}
if(*pCount == 0)
{
printf("등록된 회원이 한명도 없습니다.\n");
return;
}
printf("삭제하고자 하는 이름 입력 : ");
scanf("%s", name);
for(i = 0; i < *pCount; i++)
{
if(strcmp(member[i].name, name) == 0)
{
for(j = i; j < *pCount -1; j++)
{
strcpy(member[j].name, member[j+1].name);
strcpy(member[j].tel, member[j+1].tel);
strcpy(member[j].address, member[j+1].address);
}
(*pCount)--;
printf("삭제되었습니다.\n");
return;
}
}
printf("삭제하고자하는 회원이 없습니다.\n");
}
int ReadFile(Member member[])
{
int i = 0;
char searchCondition[20];
FILE * fp, * fp1;
fp = fopen("member.txt", "r");
fp1 = fopen("dd.txt", "r");
if(fp == NULL || fp1 == NULL)
return i;
while(!feof(fp))
{
if(fscanf(fp, "%s %s", member[i].name, member[i].tel) == -1)
break;
if(fgets(member[i].address, 100, fp) == NULL)
break;
while(!feof(fp1))
{
if(fscanf(fp1, "%s %s", member[i].name, member[i].tel) == -1)
break;
if(fgets(member[i].address, 100, fp1) == NULL)
break;
i++;
}
fclose(fp);
fclose(fp1);
return i;
}
}
void SaveFile(Member member[], const int count)
{
int i;
FILE * fp, *fp1;
fp = fopen("member.txt", "w");
fp1 = fopen("dd.txt", "w");
for(i = 0; i < count; i++)
fprintf(fp, "%s %s %s\n", member[i].name, member[i].tel, member[i].address);
for(i = 0; i < count; i++)
fprintf(fp1, "%s %s %s\n", member[i].name, member[i].tel, member[i].address);
fclose(fp);
fclose(fp1);
}
int Menu()
{
int menuNo;
printf("1. 회원가입\n");
printf("2. 회원검색\n");
printf("3. 회원삭제\n");
printf("4. 종 료\n");
printf("선택 : ");
scanf("%d", &menuNo);
return menuNo;
}
void JoinMember(Member member[], int * pCount)// 입력
{
FILE * fp;
char searchCondition[20];
printf("이름 입력 : ");
scanf("%s", member[*pCount].name);
fflush(stdin);
printf("전화번호 입력 : ");
scanf("%s", member[*pCount].tel);
fflush(stdin);
printf("주소 입력 : ");
gets(member[*pCount].address);
fflush(stdin);
while(1) //무한반복
{
printf("입력할 파일명을 입력하세요(예: *.txt):"); //파일명을 입력받을 문구 출력
scanf("%s",searchCondition); //입력받은 문자열을 filename에 저장
fp=fopen(searchCondition,"a+"); //파일을 쓰기전용으로 연다
fprintf(fp, "%s %s %s\n", member[*pCount].name, member[*pCount].tel, member[*pCount].address);
fclose(fp); //하단 라인을 출력하고 줄내림
(*pCount)++;
printf("회원이 등록됬습니다.\n");
break; //무한반복 탈출
}
}
void SearchMember(Member member[], const int count) //검색
{
int i, mode;
char searchCondition[20];
FILE * fp, * fp1;
while(1) //무한반복
{
printf("입력할 파일명을 입력하세요(예: *.txt):"); //파일명을 입력받을 문구 출력
scanf("%s",searchCondition); //입력받은 문자열을 filename에 저장
fp=fopen(searchCondition,"r"); //파일을 읽기전용으로 연다
fp1=fopen(searchCondition,"r"); //파일을 읽기전용으로 연다
if(fp == NULL || fp1 == NULL) //열린 파일이 없으면
printf("해당 파일이 없습니다."); //에러문구 출력하고 다시 반복
else //아니면
break; //무한반복 탈출
fclose(fp); //하단 라인을 출력하고 줄내림
fclose(fp1); //하단 라인을 출력하고 줄내림
}
if(count == 0)
{
printf("등록된 회원이 한명도 없습니다.\n");
return;
}
printf("검색 방법 선택\n");
printf("1. 전화번호\n");
printf("2. 이름\n");
printf("선택 : ");
scanf("%d", &mode);
if(mode == 1)
printf("전화번호 입력 : ");
else
printf("이름 입력 : ");
fflush(stdin);
scanf("%s", searchCondition);
for(i = 0; i < count; i++)
{
if(mode == 1 && strcmp(searchCondition, member[i].tel) == 0)
break;
else if(mode == 2 && strcmp(searchCondition, member[i].name) == 0)
break;
}
if(i == count)
printf("검색조건에 해당하는 회원이 없습니다.\n");
else
{
printf("이름 : %s\n", member[i].name);
printf("전화번호 : %s\n", member[i].tel);
printf("주소 : %s\n", member[i].address);
}
}
void main()
{
int MenuNo;
int count = 0;
Member member[MAX];
count = ReadFile(member);
while(1)
{
MenuNo = Menu();
if(MenuNo == 1)
JoinMember(member, &count);
else if(MenuNo == 2)
SearchMember(member, count);
else if(MenuNo == 3)
DeleteMember(member, &count);
else if(MenuNo == 4)
break;
else
printf("메뉴 번호 선택이 잘못되었습니다.\n");
}
}
모르겟어
모
르
겟
따
그래?
그
럼
공
부
해
서
알
려줘야지