c - 如何验证输入值只是 C 中的正数?
问题描述
我需要检查如果用户输入一个值,程序仅在该值是 [1-8] (含)之间的正整数时运行,但如果输入值是字母或单词或根本不输入(Enter ),程序再次要求输入
#include <stdio.h>
int main (){
int height;
do {
printf ("Height: ");
scanf ("%i", &height);
}
while (height < 1 || height > 8);
{ .
.
.
.
我正在考虑在while验证中添加另一个条件“||(或)”,比如while“高度与整数不同(!=)”然后做......
但我不知道如何在其他 StackOverflow 问题中检查该语句。我希望你能启发我
解决方案
利用fgets()
char buf[1000];
if (!fgets(buf, sizeof buf, stdin)) {
exit(EXIT_FAILURE);
}
if (buf[1] != '\n') exit(EXIT_FAILURE);
if (*buf < '1') exit(EXIT_FAILURE);
if (*buf > '8') exit(EXIT_FAILURE);
// use *buf, maybe (*buf - '0')
"<ENTER>"
, "0<ENTER>"
, "12<ENTER>"
, "a<ENTER>"
, "<SPACE>3<ENTER>"
, ...的输入将失败退出
推荐阅读
- sql - SQL 字符串与 Like 匹配
- laravel - gcloud cron 工作和 laravel
- perl - 在 Perl 中找不到导出的子例程
- paypal - 在 Express Checkout 中使用 Paypal 登录之前显示访客表格
- forms - WordPress 联系表 7 图像尺寸验证
- python - 基于列表过滤的 Elasticsearch 查询
- javascript - Javascript函数中的“this”关键字
- java - 如何在Java上确定字符串是否为双精度
- fingerprint - 我可以比较从不同指纹扫描仪扫描的两个指纹吗?
- postgresql - 如何在 postgresql 中使用 age() 函数