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

C语言读取日期字符串转整数输出时无运行结果问题求解

代码核心问题说明

  • char* InputUserDate是未分配内存的野指针,没有空间存储用户输入的字符串,直接写入会触发内存访问异常,导致程序崩溃无输出
  • scanf("%s",&InputUserDate)用法错误:如果InputUserDate是已经分配空间的字符数组/指针,直接传变量名即可,取地址符&会把内容写入指针变量本身的内存空间,完全不符合预期
  • 输出格式不符合要求:需要用%02d补前导零保证月份、日期显示为2位,同时要按要求分行输出
  • 存在多余的重复引入stdio.h头文件的问题

修复后完整代码

#include <stdio.h>
#include <string.h>

int main(){
    // 出生日期格式最长10位(含分隔符),留1位存字符串结束符'\0'
    char InputUserDate[11];
    int yyyy;
    int mm;
    int dd;
    printf("Your Date of Birth yyyy-mm-dd:");
    scanf("%s", InputUserDate);
    sscanf(InputUserDate, "%d-%d-%d", &yyyy, &mm, &dd);
    printf("Year:%d\n\nMonth:%02d\n\nDay:%02d\n", yyyy, mm, dd);
    return 0;
}

运行效果

输入2000-04-01后即可输出期望的格式:

Year:2000

Month:04

Day:01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:45:02