首页 > 解决方案 > 如何验证输入值只是 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 问题中检查该语句。我希望你能启发我

标签: cvalidationinputinteger

解决方案


利用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>", ...的输入将失败退出


推荐阅读