You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用scanf指定d-m-y日期格式并验证短横线分隔符

C语言日期格式d-m-y校验方案

你可以直接利用scanf格式串的匹配特性实现分隔符校验,不需要调整函数入参,修改逻辑如下:

  • 把scanf的格式串从"%d%d%d"调整为"%d-%d-%d",格式串里的普通字符-会强制要求输入流中两个整数之间必须是短横线,否则匹配失败
  • 校验scanf的返回值:scanf会返回成功匹配的参数个数,只有返回值等于3的时候,才说明输入完全符合d-m-y的格式要求

修改后的完整代码如下:

int date_read(int *d, int *m, int *y){
    // 匹配失败时直接返回0表示读取/格式校验不通过
    if (scanf("%d-%d-%d", d, m, y) != 3) {
        return 0;
    }
    // 若有需要可以在此处追加日期合法性校验,比如月份范围1-12、日期对应月份的合法范围等
    return 1;
}

这个方案完全不需要调整现有函数的入参,调用方可以通过返回值判断输入是否符合格式要求:返回1代表读取成功格式合法,返回0代表格式错误或输入不完整。

内容的提问来源于stack exchange,提问作者IllyaKara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:15:01