如何使用scanf - C从日期读取斜杠(/)

  • 本文关键字:读取 日期 scanf 何使用 c
  • 更新时间 :
  • 英文 :


我目前得到它为:

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 != '/');

最新更新