인사말을 입력받고, 사전순으로 정렬해서 출력하기.
#include <stdio.h>
#include <string.h>
void initIntro(char (*szIntro)[80], char **pIntro);
int inputIntro(char (*szIntro)[80]);
void sortIntro(char **pIntro, int nCount);
void printIntro(int mode, void *vp, int nCount);
int main(void)
{
char szIntro[10][80]; //인사말저장배열
char *pIntro[10]; //인사말위치저장 배열
int nCount;
initIntro(szIntro,pIntro);
nCount = inputIntro(szIntro);
sortIntro(pIntro, nCount);
printIntro(1,pIntro,nCount);
printIntro(0,szIntro,nCount);
return 0;
}
void initIntro(char (*szIntro)[80], char **pIntro) // szIntro에 주소값들을 pIntro에 연결해주는 함수야.
{
int i;
for(i=0;i<10;i++)
{
pIntro[i] = szIntro[i];
}
}
int inputIntro(char (*szIntro)[80])
{
int nCount = 0;
printf("enter the introduction(EXIT : end) : ");
while(strcmp( gets(szIntro[nCount]), "end") != 0)
{
printf("enter the introduction(EXIT : end) : ");
nCount++;
}
return nCount;
}
void sortIntro(char **pIntro, int nCount)
{
int i, k;
char *pTemp;
for(i=0; i<nCount;i++)
{
for(k=i+1;k<nCount;k++)
{
if(strcmp( pIntro[i], pIntro[k]) > 0)
{
pTemp = pIntro[i];
pIntro[i] = pIntro[k];
pIntro[k] = pTemp;
}
}
}
}
void printIntro(int mode, void *vp, int nCount)
{
int i;
if(mode == 0)
{
printf("#print order to inputed.\n");
for(i=0;i<nCount;i++)
{
printf("%s\n",((char (*)[80])vp)[i]);
}
printf("\n");
}
else if(mode == 1)
{
printf("#print order to dictionary.\n");
for(i=0;i<nCount;i++)
{
printf("%s\n",((char **)vp)[i]);
}
printf("\n");
}
}
댓글 없음:
댓글 쓰기