小编bri*_*uml的帖子

使用带有%i的scanf捕获日期时的问题(mm dd yyyy)

我正在编写一个计算两个日期之间经过的天数的程序.为此,我必须在如下定义的结构中输入日期作为整数:

struct date {
    int month;
    int day;
    int year;
};
Run Code Online (Sandbox Code Playgroud)

现在,我已经想出了如何运行我的程序,但是当月或日是单个数字时,用户无法以(mm dd yyyy)格式输入日期,这真是让我烦恼.让我告诉你我的代码(请不要介意调试printf语句):

printf("Enter your start date (mm dd yyyy)\n");
scanf("%i %i %i", &startDate.month, &startDate.day, &startDate.year);
// DEBUG printf("Start date = %i/%i/%i\n", startDate.month, startDate.day, startDate.year);
// DEBUG printf("start date month = %i", startDate.month);

printf("Enter your end date (mm dd yyyy)\n");
scanf("%i %i %i", &endDate.month, &endDate.day, &endDate.year);
// DEBUG printf("End date = %i/%i/%i\n", endDate.month, endDate.day, endDate.year);
Run Code Online (Sandbox Code Playgroud)

如果用户输入:

08 08 2004
Run Code Online (Sandbox Code Playgroud)

然后将开始日期记录为

0/8/0
Run Code Online (Sandbox Code Playgroud)

这等于用户输入的前三位数字.好的,我明白了.我也明白用户可以输入"8 8 2004"并且程序运行良好......但我相信编程是关于细节的,而且这个是一个bugger.谁能帮我解决这个问题?

c printf date scanf

3
推荐指数
1
解决办法
3342
查看次数

标签 统计

c ×1

date ×1

printf ×1

scanf ×1