我想保存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?