如何编写C语言程序实现1-20输入验证及非法输入判定
C语言选举系统输入验证实现
核心实现思路
要完成1-20整数的输入验证,需要同时处理三类无效输入:
- 负数或0
- 字符、字符串等非整数输入
- 大于20的整数
关键在于利用scanf的返回值判断输入是否为有效整数,同时清空输入缓冲区避免错误输入残留,干扰后续操作。
完整代码
#include <stdio.h> int main() { int input; int read_result; printf("请输入1-20之间的整数:"); // 尝试读取整数,scanf返回成功读取的变量个数 read_result = scanf("%d", &input); // 处理非整数输入:scanf返回0表示未读取到有效整数 if (read_result == 0) { printf("invalid input\n"); // 清空输入缓冲区的残留字符,避免影响后续操作 while (getchar() != '\n'); } else { // 处理负数、0或超出20的情况 if (input < 1 || input > 20) { printf("invalid input\n"); } else { // 输入有效时的处理逻辑,可替换为选举系统业务代码 printf("输入有效:%d\n", input); } } return 0; }
代码详细解释
scanf返回值判断scanf("%d", &input)尝试从输入流读取整数,成功读取时返回1;若输入字符、字符串等非整数,返回0。通过该返回值可直接识别非整数输入。
清空输入缓冲区
- 非整数输入会残留字符在缓冲区,若不清理,后续输入操作会直接读取这些残留内容,导致逻辑混乱。用
while (getchar() != '\n')循环读取缓冲区直到换行符,彻底清空残留内容。
- 非整数输入会残留字符在缓冲区,若不清理,后续输入操作会直接读取这些残留内容,导致逻辑混乱。用
范围与负数判断
- 当
scanf成功读取整数后,直接判断input是否在1-20区间内,负数、0或大于20的数均判定为无效输入。
- 当
可扩展性
- 代码中“输入有效”的分支可直接替换为选举系统的业务逻辑,比如候选人票数统计、菜单跳转等。
内容的提问来源于stack exchange,提问作者Md_Adnan
相关产品推荐
相关产品推荐

