- 열거형의 활용

#include<stdio.h>

const char*day[] = {
  "월요일",
  "화요일",
  "수요일",
  "목요일",
  "금요일",
  "토요일",
  "일요일",            
   
0};
void MONDAY();
void TUESDAY();
void WENDSDAY();
void THURSDAY();
void FRIDAY();
void SATURDAY();
void SUNDAY();

enum day_num
{
     MON,
     TUE,
     WED,
     THU,
     FRI,
     SAT,
     SUN,

     END
};
int main()
{
     int iNum;
     for(iNum = MON; END > iNum; ++iNum)
     {
         printf(
"%s\n", day[iNum]);
     }
    return 0;
}

⇒ 출력 결과




#include<stdio.h>

void MONDAY();
void TUESDAY();
void WENDSDAY();
void THURSDAY();
void FRIDAY();
void SATURDAY();
void SUNDAY();

struct MessageMap
{
    
const char *name;
     void (*fp)();
};

struct MessageMap map[]={
     {
"월요일", MONDAY},
     {
"화요일", TUESDAY},
     {
"수요일", WENDSDAY},
     {
"목요일", THURSDAY},
     {
"금요일", FRIDAY},
     {
"토요일", SATURDAY},
     {
"일요일", SUNDAY},
     {
0, 0}
};
enum day_num
{
     MON,
     TUE,
     WED,
     THU,
     FRI,
     SAT,
     SUN,

     END
};

int main()
{
     int iCnt; // 요일을 찾는다. 찾으면 해당하는 번호의 함수를 부르는 역활.
     int iRet;
     int iRet2;
     
char buff[10];


    
while(1)
     {
         write(
1, "요일 입력>", 10);
         iRet
= read(0, buff, sizeof(buff));
         buff[iRet-
1] = 0;
         iRet
= strlen(buff); // buff 길이를 확인
       if(iRet == 0) // 입력값이 없으면 종료
        {
           break;
        }
       for(iCnt = MON;iCnt<END;++iCnt)
        {
              //iRet = strcmp(map[iCnt].name, buff);
              iRet2 = strncmp(map[iCnt].name, buff, iRet);
            if(iRet2 == 0)
              {
               break;
              }
        }
       if(iCnt >= END) // 요일이 정확히 입력 안되면 위로 다시 되돌린다.
         {
              continue;
         }
         map[iCnt].fp();
//
      }

     
return 0;
}

void MONDAY()
{
      printf(
"%s(MONDAY)\n", map[MON].name);
      
return ;
}
void TUESDAY()
{
      printf(
"%s(THESDAY)\n", map[TUE].name);
     return ;
}
void WENDSDAY()
{
      printf(
"%s(WENDSDAY)\n", map[WED].name);
     return ;
}
void THURSDAY()
{
      printf(
"%s(THURSDAY)\n", map[THU].name);
     return ;
}
void FRIDAY()
{
     printf(
"%s(FRIDAY)\n", map[FRI].name);
    return ;
}
void SATURDAY()
{
     printf(
"%s(SATURDAY)\n", map[SAT].name);
    
return ;
}
void SUNDAY()
{
      printf(
"%s(SUNDAY)\n", map[SUN].name);
     return ;
}
⇒ 출력 결과