게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C로 프로그래밍 하는데 도와주실분.........
게시물ID : computer_135839짧은주소 복사하기
작성자 : 승횬짱
추천 : 0/4
조회수 : 373회
댓글수 : 2개
등록시간 : 2013/12/16 19:00:31
제가 공부하면서 주소록 프로그램 하나짜고있는데요
정렬하는쪽 부분공부를 덜해서 파일저장하고 불러오고는 할수있는데....
이소스에서 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);
        }
    }
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호