C语言 typedef enum to typedefstruct



我想保存typedef枚举日期到typedef struct数据。

我的代码是

typedef enum weather {
    clear = 1,
    cloudy,
    cold,
    rainy,
    stormy
}Weather;

typedef struct diary {
    time_t date;
    Weather weather;
    char contents[MAX];
}Diary;
void save(FILE *pFile, Diary*da) {
    fprintf(pFile, " %s %s n",da->date,da->contents);
}

void in(Diary*da) {
    int _weather;
    puts("Enter the current date(YYYY-MM-DD) : ");
    scanf("%s", &da->date);
    getchar();
    puts("Enter the current weather, (1) Clear (2) Cloudy (3) Cold (4) Rainy (5) Stormy : ");
    scanf("%d", &_weather);
    getchar();
    puts("Enter the contents");
    scanf("%79s", da->contents);
    getchar();
}

我不知道如何将数字更改为单词(透明,多云,冷..)并在输出文件中打印出来。

到底是什么'time_t'数据类型?我无法打印我输入的日期。

kaylum在您的帖子下的评论中提到了这一点,这就是所建议的:

const char* const WEATHER_STRINGS[5] = { "Clear", "Cloudy", "Cold", "Rainy", "Stormy" };
const char* getWeatherName(int weatherIdx)
{
   return WEATHER_STRINGS[weatherIdx];
}

然后您可以这样调用该函数:

getWeatherName(&da->weather)

将返回匹配枚举的整数值的单词。

我的c可能有点生锈,但是这个想法是正确的,只需验证我的语法即可。=)

这个想法是您创建一个数组来用作字符串/值的查找。然后,您可以将枚举用作索引来从数组中提取匹配的单词。您不需要函数,如果需要的话,您可以直接从数组中拉出,但是使用功能将其封装使其更容易读取,然后如果您以后需要更多功能,则可以随时扩展它。

至于time_t,您可以查看以前回答的问题以获取有关它的更多信息:如何以特定格式打印时间_t?

相关内容

  • 没有找到相关文章

最新更新