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
相关产品推荐
相关产品推荐

