用宏简化枚举类型的字符串输出

来源:互联网 发布:算法导论 第3版 pdf 编辑:程序博客网 时间:2024/06/07 11:26


/// @file exam_1_8.c/// @brief /**exam_1_8 *定义一个枚举变量,其枚举元素为人民币的面值。要求输出枚举元素字符串。*/#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <crtdbg.h>#include <conio.h>typedef enum e_Face_Value_Of_RMB{    e_Face_Value_Of_RMB_yuan_100 = 0,    e_Face_Value_Of_RMB_yuan_50,    e_Face_Value_Of_RMB_yuan_20,    e_Face_Value_Of_RMB_yuan_10,    e_Face_Value_Of_RMB_yuan_5,    e_Face_Value_Of_RMB_yuan_2,    e_Face_Value_Of_RMB_yuan_1,    e_Face_Value_Of_RMB_jiao_5,    e_Face_Value_Of_RMB_jiao_2,    e_Face_Value_Of_RMB_jiao_1,    e_Face_Value_Of_RMB_fen_5,    e_Face_Value_Of_RMB_fen_2,    e_Face_Value_Of_RMB_fen_1,}E_FACE_VALUE_OF_RMB;#define STR(x) #x#define CASE_RMB_FACE_VALUE(x, y) \    case x: \    { \        strcpy(y, STR(x)); \    } \    breakchar* fnGetString_RmbFaceValue(E_FACE_VALUE_OF_RMB eIn, char* pcMsgBuf);int main(int argc, char *argv[ ], char *envp[ ]){    int eIndex = e_Face_Value_Of_RMB_yuan_100;    char cMsgBuf[260] = {'\0'};    for (eIndex = e_Face_Value_Of_RMB_yuan_100; eIndex <= e_Face_Value_Of_RMB_fen_1; eIndex++)    {        printf("%s\n", fnGetString_RmbFaceValue((E_FACE_VALUE_OF_RMB)eIndex, cMsgBuf));    }    /**    e_Face_Value_Of_RMB_yuan_100    e_Face_Value_Of_RMB_yuan_50    e_Face_Value_Of_RMB_yuan_20    e_Face_Value_Of_RMB_yuan_10    e_Face_Value_Of_RMB_yuan_5    e_Face_Value_Of_RMB_yuan_2    e_Face_Value_Of_RMB_yuan_1    e_Face_Value_Of_RMB_jiao_5    e_Face_Value_Of_RMB_jiao_2    e_Face_Value_Of_RMB_jiao_1    e_Face_Value_Of_RMB_fen_5    e_Face_Value_Of_RMB_fen_2    e_Face_Value_Of_RMB_fen_1    END, press any key to quit    */        printf("END, press any key to quit\n");    getchar();        return 0;}char* fnGetString_RmbFaceValue(E_FACE_VALUE_OF_RMB eIn, char* pcMsgBuf){    _ASSERT(NULL != pcMsgBuf);    switch (eIn)    {        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_yuan_100, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_yuan_50, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_yuan_20, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_yuan_10, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_yuan_5, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_yuan_2, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_yuan_1, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_jiao_5, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_jiao_2, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_jiao_1, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_fen_5, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_fen_2, pcMsgBuf);        CASE_RMB_FACE_VALUE(e_Face_Value_Of_RMB_fen_1, pcMsgBuf);    default:        _ASSERT(0);    }    return pcMsgBuf;}


0 0