c - 接受多种格式的输入
问题描述
我正在尝试创建一个接受日期的代码,但是我想让用户能够输入日期为 dd/mm/yyyy 或 dd-mm-yyyy。我的代码在下面,我尝试使用 OR 但它不起作用
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main ()
{
int dayA, monthA, yearA,
printf("First date in format DD/MM/YYYY or DD-MM-YYYY: ");
scanf("%d/%d/%d" || "%d-%d-%d", &dayA, monthA, yearA);
解决方案
这是一个简单的方法。它输入一个字符串,然后检查其中一种格式方法是否有效。检查函数族的返回值总是很重要的scanf
,以了解转换是否成功。
#include<stdio.h>
int main(void)
{
int dayA, monthA, yearA;
puts("Enter a date dd/mm/yyyy or dd-mm-yyyy");
char datestr[32];
if(fgets(datestr, sizeof datestr, stdin) != NULL) {
if(sscanf(datestr, "%d/%d/%d", &dayA, &monthA, &yearA) == 3 || // added missing &
sscanf(datestr, "%d-%d-%d", &dayA, &monthA, &yearA) == 3) {
printf("Date is day %d, month %d, year %d\n", dayA, monthA, yearA);
}
}
}
这是程序的两次运行:
输入日期 dd/mm/yyyy 或 dd-mm-yyyy 2020 年 4 月 23 日 日期为 2020 年第 4 个月第 23 天输入日期 dd/mm/yyyy 或 dd-mm-yyyy 23-4-2020 日期为 2020 年第 4 个月第 23 天
推荐阅读
- azure - MSAL:: 登录时禁用 Azure 登录提示
- python - 意外输出:没有得到准确的输出
- c# - 在自动映射器中使用嵌套映射
- ios - 如何从 iOS 中的 AWS S3 存储桶下载文件?
- c++ - 函数模板参数推导模板参数vs默认模板参数vs返回类型
- google-apps-script - 脚本完成但没有显示任何内容
- nginx - 现有 Nginx 重写规则的表单 url
- html - 在 Visual Studio Code 中输入脚本时我的问题是什么
- r - 如何从嵌套在多级列表中的数据中提取信息?
- visual-studio - 如何调试 C4722 #import 引用了缺失类型库中的类型;'missing-type' 用作占位符