我需要计算年龄,然后在 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);
其中%
后面的*
表示读取并丢弃,括号中的^0-9
表示任何非0的字符到 9。 可能的陷阱:如果第一个字符不需要,则 scanf
失败。如果在开头放置%*[^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');
}
关于c - C语言中的用户输入过滤,例如避免字母和符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12842037/