제가 공부하면서 주소록 프로그램 하나짜고있는데요
정렬하는쪽 부분공부를 덜해서 파일저장하고 불러오고는 할수있는데....
이소스에서 result.txt 로 파일 저장하기 전에 이름순으로 정렬해서 저장하도록 수정좀해주실분있나요 .....
구조체배열이여서 어떻게 정렬해야할지 도무지 감이 안잡히네요 .. 어디서 정렬해야할지도
부탁좀드리겠습니다.........
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct person
{
char name[20];
char htel[20];
char tel[20];
char email[40];
};
struct person data[40];
int index;
void WriteAddress();//입력
void ListAddress();//출력
void ModifyAddress();//수정
void ModiModifyAddress();//검색
void Save()//
{
FILE *fp;
int i;
int j;
if((fp = fopen("result.txt" , "w")) == NULL )
{
printf("파일오픈에러!\n");
return ;
}
for(i=0 ; i < index ; i++)
{
fprintf(fp,"%s\t%s\t\t%s\t%s\n",data[i].name , data[i].htel , data[i].tel , data[i].email);
}
fclose(fp);
printf("result.txt파일에저장되었습니다\n");
}
void Load()
{
FILE *fp;
int i;
if((fp = fopen("result.txt" , "r")) == NULL ) return ;
while( fscanf(fp , "%s %s %s %s", data[index].name , data[index].htel , data[index].tel , data[index].email) != EOF)
{
index++;
}
fclose(fp);
printf("파일의내용을Loadind 했습니다. \n");
}
int main()
{
char x;
Load();
while(1)
{
printf("1.주소입력하기 \n");
printf("2.입력된주소보기 \n");
printf("3.수정하기 \n");
printf("4.주소검색하기 \n");
printf("5.종료하기 \n");
printf("선택: [ ]\b\b\b");
scanf("%c", &x);
switch (x)
{
case '1': WriteAddress(); break;
case '2': ListAddress(); break;
case '3': ModifyAddress(); break;
case '4': ModiModifyAddress(); break;
case '5': Save(); return 0;
}
printf("\n");
}
return 0;
}
void WriteAddress()// 이름 집전화 핸드폰 이메일 받도록 변경 하고 나머지들도알아서
{
if (index < 40)
{
printf("이름: "); fflush(stdin); gets( data[index].name );
printf("집전화: "); fflush(stdin); gets( data[index].htel );
printf("휴대전화: "); fflush(stdin); gets( data[index].tel );
printf("이메일: "); fflush(stdin); gets( data[index].email );
index++;
}
else
{
printf("더이상입력불가능\n");
}
}
void ListAddress()
{
int i;
printf("이름\t집전화\t\t\t휴대전화\t\t이메일\n");
for(i=0 ; i < index ; i++)
{
printf("%s\t%s\t\t%s\t%s\n", data[i].name , data[i].htel , data[i].tel , data[i].email);
}
printf("\n");
}
void ModifyAddress()
{
int i;
char name[20];
printf("수정할이름: ");fflush(stdin);
gets( name ) ;
for(i=0 ; i < index ; i++)
{
if( strcmp( name , data[i].name) == 0 )
{
printf("[ 수정]\n");
printf("이름: "); fflush(stdin); gets( data[i].name );
printf("집전화: "); fflush(stdin); gets( data[i].htel );
printf("휴대전화: "); fflush(stdin); gets( data[i].tel );
printf("이메일: "); fflush(stdin); gets( data[i].email );
return ;
}
}
printf("검색실패\n");
}
void ModiModifyAddress()
{
int i;
char name[20];
printf("검색할이름: ");fflush(stdin);
gets( name ) ;
for(i=0 ; i < index ; i++)
{
if( strcmp( name , data[i].name) == 0 )
{
printf("%s\t%s\t\t%s\t%s\n", data[i].name , data[i].htel , data[i].tel, data[i].email);
}
}
}