首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“%d/%d/%d”在C中是什么意思?

“%d/%d/%d”在C中是什么意思?
EN

Stack Overflow用户
提问于 2019-07-04 10:38:16
回答 5查看 5.9K关注 0票数 1
代码语言:javascript
复制
int currD, currM, currY;
scanf("%d/%d/%d", &currD, &currM, &currY);

我看到这段代码收到了DD/MM/YYYY格式的出生日期,但是我想知道放置'/‘意味着什么,我知道如果没有这个格式,它将导致错误的输入,因为字符'/’。那么这到底意味着什么呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-07-04 10:58:57

当遇到您不理解的代码,以及从库中调用函数时,您的首要任务是研究该函数的文档。对于C标准函数,只要谷歌函数名就够了。

在这种情况下,一个很好的参考是优先选择 (不要被网站名称误导,这是C引用,而不是C++引用)。它将函数的定义定义为

代码语言:javascript
复制
int scanf( const char *format, ... );​

现在查找format参数的参数描述:

指向指定如何读取输入的以空结尾的字符串的指针。

随后的文本解释了如何读取格式字符串。特别是:

  • …除格式字符串中的%字符外,其他字符从输入流中消耗一个完全相同的字符,或者如果流上的下一个字符不相等,则导致函数失败。
  • 转换规范,格式如下:
    • 介绍性%字符
    • 转换格式说明符
    • d - matches a十进制整数

换言之:

scanf根据格式字符串解析文本输入。在格式字符串中,/匹配用户输入中的斜杠。%d匹配十进制整数。

因此,scanf("%d/%d/%d", …)将匹配一个由由斜杠分隔的三个整数组成的字符串,并将数字值存储在指向变量中。

票数 1
EN

Stack Overflow用户

发布于 2019-07-04 10:41:11

只是日期格式中的分隔符。当某些函数搜索那些/时,该错误必须引发。

票数 0
EN

Stack Overflow用户

发布于 2019-07-04 10:43:15

scanf的第一个参数是一个字符串,指定要用于在进一步的参数中存储信息的字符串的格式。您可以看到这个格式字符串是一个模式:%d表示一个整数,而没有'%‘,它意味着它只需要与字符完全匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56886157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档