我正在使用 getdate_r在 C 程序中解析用户输入的时间。我发现的一个问题是它正在用当前时间数据填充我的 struct tm
以查找任何丢失的数据。例如,如果用户输入“Dec 1”,它会正确地将这些值放入 struct tm
中,但是像小时、分钟和秒这样的字段也会被填充并填充为当前时间。
如何防止这种情况发生?我宁愿这些值是 NULL
,这样我可以稍后检查这些缺失的字段。当没有输入时间时,我想让小时、分钟和秒最大化(23:59:59
),但现在我无法在不手动解析字符串以查看时间数据是否存在的情况下检测到这一点包含在哪种情况下违背了使用 getdate_r
的目的。
最佳答案
该行为符合手册页中的说明。我建议使用预定义的字符串,然后用输入数据覆盖预定义的字符串。预定义的字符串和用户输入的格式应该相同。
例子:
memset(strfmt, <len>, 0). /* or fill with the date required */
memcpy(strfmt, userinput, <len of user input>).
关于c - 防止 getdate_r 填写它不知道的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543891/