-1

我需要计算年龄,然后在 c 编程中如何在 scanf 进行“用户输入过滤”。

 main()
 {
 scanf("%d %d %d ,month,date, year);
 --------;
 printf("your age is"...);
 }

在这里用户可以输入字母或一些符号如何在c中过滤它们?

4

2 回答 2

3

如果通过过滤,您的意思是删除有问题的字符,您可以读取缓冲区中的行并检查它们,或者使用这样的快速破解:

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');
}
于 2012-10-11T14:49:00.573 回答
0

我不确定这是否是您要查找的内容 - 您可以使用该atoi函数将用户输入转换为整数并检查它们是否为有效整数。

于 2012-10-11T14:42:48.907 回答