c - C语言中的用户输入过滤,例如避免字母和符号

标签 c input filter

我需要计算年龄,然后在 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/

相关文章:

c - short、int、long、float、double long、double、char 的大小

css - 实现背景过滤器 : opacity(0%) in CSS

c - 帮助从汇编语言翻译成 C

c++ - 如何将指向 "DEFINED"常量的指针传递给 C 中的函数?

python - 你如何在 Python 中使用 input 输入整数

html - 如果输入文本格式不是 "valid",则 "required"伪类不适用于 "email"电子邮件输入

jquery - 使用 jQuery 实现类似 Twitter 的输入字段

javascript - 如何使用js查找对象数组中的重复数据?

javascript - 了解 'arr.filter(callback[, thisArg])' 语法

c - Linux重定向消息: __strlen_avx2, __mempcpy_avx_unaligned_erms, __strchrnul_avx2