강좌 & 팁
- 열거형의 활용
#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 ;
}
⇒ 출력 결과