我目前得到它为:
scanf("%d%d%d",&day1,&mon1,&year1);
当我传入一个日期时,这工作正常,如下所示:
02-02-2016
但是,如果我用斜杠而不是破折号传递它,我希望它也很好:
02/02/2016
我尝试过这种方式:
scanf("%d/%d/%d",&day1,&mon1,&year1);
现在这将接受斜杠(/(,但不支持破折号(-(
它怎么能接受这两种???
我将如何去做?我是这种语言的新手,所以某种建议会很棒。提前致谢
如下格式字符串: "%d%*[-/]%d%*[-/]%d"
只接受数字之间的破折号或斜杠,但丢弃那里的任何字符。 (这已经达到了我scanf
知识的外部极限;我想我从来没有真正使用过这个功能。
char junk;
scanf("%d%c%d%c%d", &day1, &junk, &mon1, &junk, &year1);
这将起作用。你不必对你正在阅读的字符做任何事情。如果你想禁止任何不-
或/
的东西,那么你可以对这些字符使用两个变量,检查它们是否是你允许的值,然后printf("Invalid input")
或反应你喜欢。
例如,继续读取输入,直到正确:
char delim1, delim2;
do {
printf("Please enter date (dd-mm-yy or dd/mm/yy):");
scanf("%d%c%d%c%d", &day1, &delim1, &mon1, &delim2, &year1);
} while (delim1 != '-' && delim1 != '/' && delim2 != '-' && delim2 != '/');