int currD, currM, currY;
scanf("%d/%d/%d", &currD, &currM, &currY);我看到这段代码收到了DD/MM/YYYY格式的出生日期,但是我想知道放置'/‘意味着什么,我知道如果没有这个格式,它将导致错误的输入,因为字符'/’。那么这到底意味着什么呢?
发布于 2019-07-04 10:58:57
当遇到您不理解的代码,以及从库中调用函数时,您的首要任务是研究该函数的文档。对于C标准函数,只要谷歌函数名就够了。
在这种情况下,一个很好的参考是优先选择 (不要被网站名称误导,这是C引用,而不是C++引用)。它将函数的定义定义为
int scanf( const char *format, ... );现在查找format参数的参数描述:
指向指定如何读取输入的以空结尾的字符串的指针。
随后的文本解释了如何读取格式字符串。特别是:
%字符外,其他字符从输入流中消耗一个完全相同的字符,或者如果流上的下一个字符不相等,则导致函数失败。d - matches a十进制整数。
换言之:
scanf根据格式字符串解析文本输入。在格式字符串中,/匹配用户输入中的斜杠。%d匹配十进制整数。
因此,scanf("%d/%d/%d", …)将匹配一个由由斜杠分隔的三个整数组成的字符串,并将数字值存储在指向变量中。
发布于 2019-07-04 10:41:11
只是日期格式中的分隔符。当某些函数搜索那些/时,该错误必须引发。
发布于 2019-07-04 10:43:15
scanf的第一个参数是一个字符串,指定要用于在进一步的参数中存储信息的字符串的格式。您可以看到这个格式字符串是一个模式:%d表示一个整数,而没有'%‘,它意味着它只需要与字符完全匹配。
https://stackoverflow.com/questions/56886157
复制相似问题