【问题标题】:Prevent getdate_r from filling in data it doesn't know防止 getdate_r 填写它不知道的数据
【发布时间】:2016-02-22 00:19:09
【问题描述】:

我在 C 程序中使用 getdate_r 来解析用户输入的时间。我发现的一个问题是它正在为我的struct tm 填充任何丢失数据的当前时间数据。例如,如果用户输入“Dec 1”,它会正确地将这些值放入struct tm,但是像小时、分钟和秒这样的字段也会被填充并填充当前时间。

如何防止这种情况发生?我宁愿这些值是NULL,这样我就可以稍后检查这些缺失的字段。当没有输入时间时,我想让小时、分钟和秒达到最大值 (23:59:59) 但现在如果不手动解析字符串以查看是否包含时间数据,则无法检测到这一点使用getdate_r

【问题讨论】:

    标签: c date parsing time


    【解决方案1】:

    预期行为如手册页中所述。我建议使用预定义的字符串,然后用输入数据覆盖预定义的字符串。预定义的字符串和用户输入的格式应该相同。

    例子:

    memset(strfmt, <len>, 0). /* or fill with the date required */
    memcpy(strfmt, userinput, <len of user input>).
    

    【讨论】:

      猜你喜欢
      • 2013-08-31
      • 2022-01-07
      • 1970-01-01
      • 2016-04-09
      • 2017-12-17
      • 1970-01-01
      • 2017-01-14
      • 2017-06-13
      • 1970-01-01
      相关资源
      最近更新 更多