|
밑의 프로그램에서 정렬하는부분에서...
제가 돌리니까 결과가 제대로 안나오는데요
어떻게 하면 제대로 나올까요?
고수님 잘 부탁드립니다.
------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSTRING 25
void Print_func(int p_number);
void Fileopen_func(int p_number);
void sort_func(int p_number);
char amstr1[MAXSTRING];
struct data{
char name[MAXSTRING];
char phone[MAXSTRING];
int age;
};
struct data list[100];
struct data buffer;
main()
{
int ctr,p_number;
char f_panbul,s_panbul;
printf("\n========주소록=========\n");
printf(" 몇명을 입력할껀지 결정하시요:");
scanf("%d",&p_number);
fflush(stdin);
for(ctr=0;ctr<p_number;ctr++)
{
printf("\n %d 번째 사람의 이름을 입력하세요:",ctr);
gets(list[ctr].name);
printf("\n %d 번째 사람의 전화번호를 입력하세요:",ctr);
gets(list[ctr].phone);
printf("\n %d 번째 사람의 나이를 입력하세요:",ctr);
scanf("%d",&list[ctr].age);
fflush(stdin);
}
printf("데이터를 알파벳순으로 정렬 하시겠습니까?:(Y/N)");
scanf("%c",&s_panbul);
if(s_panbul=='Y'||s_panbul=='y')
{
sort_func(p_number);
}
fflush(stdin);
printf("파일에 기록하시겠습니까?:(Y/N)");
scanf("%c",&f_panbul);
if(f_panbul=='Y'||f_panbul=='y')
{
Fileopen_func(p_number);
}else if(f_panbul=='N'||f_panbul=='n')
{
Print_func(p_number);
}
return 0;
}
void Fileopen_func(int p_number)
{
FILE *fh;//파일 핸들러
int result,ctr;
char filename[20];
fflush(stdin);
printf("저장할 파일 이름을 입력하세요:");
gets(filename);
if(NULL==(fh=fopen(filename,"a")))
{
printf("파일열기에 실패하였습니다.\n");
exit(-1);
}
else{
printf("파일을 열었습니다.");
}
for(ctr=0;ctr<p_number;ctr++)
{
fprintf(fh,"%s \n %s \n %d\n",list[ctr].name,list[ctr].phone,list[ctr].age);
}
printf("\n\n==>>입력하신 모든 자료를 파일에 저장하였습니다.<<==\n");
if(result=fclose(fh))
{
printf("파일을 닫는데 실패하였습니다.\n");
}
else{
printf(" 파일을 성공적으로 닫았습니다.\n");
}
}
void Print_func(int p_number)
{
int ctr;
for(ctr=0;ctr<p_number;ctr++)
{
printf("%d번\n \t이름:%s \n \t전화:%s \n \t나이:%d\n",ctr,list[ctr].name,list[ctr].phone,list[ctr].age);
}
}
void sort_func(int p_number)
{
int ctr;
for(ctr=0;ctr<p_number+1;ctr++)
{
if(strcmp(list[ctr+1].name,list[ctr].name)<0)
{
buffer=list[ctr];
list[ctr]=list[ctr+1];
list[ctr+1]=buffer;
}
}
}
|