我需要计算年龄,然后在 c 编程中如何在 scanf 进行“用户输入过滤”。
main()
{
scanf("%d %d %d ,month,date, year);
--------;
printf("your age is"...);
}
在这里用户可以输入字母或一些符号如何在c中过滤它们?
如果通过过滤,您的意思是删除有问题的字符,您可以读取缓冲区中的行并检查它们,或者使用这样的快速破解:
scanf("%d%*[^0-9]%d%*[^0-9]%d", &month, &day, &year);
其中*
after%
表示读取和丢弃^0-9
,括号中表示不是 0 到 9 的任何字符。可能的陷阱:如果第一个字符不需要,则scanf
失败。如果你把 a%*[^0-9]
放在开头,那么以数字开头的输入会失败。
或者,在失败的情况下要求用户正确输入(在以前的情况下,您还应该检查 的返回值scanf
):
while (scanf("%d %d %d", &month, &day, &year) != 3)
{
printf("bad input! Retry\n");
/* possibly flush the line: */
while (!feof(stdin) && fgetc(stdin) != '\n');
}
我不确定这是否是您要查找的内容 - 您可以使用该atoi
函数将用户输入转换为整数并检查它们是否为有效整数。