C 如何在命令行中传递特定类型的数字?

C 如何在命令行中传递特定类型的数字?,c,command-line,integer,C,Command Line,Integer,我知道如何通过命令行传递一个整数,但是如果我需要一个特定范围的整数,我该怎么做呢 例如,我有一个程序,它接受一系列数字并将它们除以五。数字必须在30-105之间,并且必须是5的倍数 如果任何数字超出该范围且不是5的倍数,则会出现错误消息 我该怎么做呢?你基本上要做三件事: 从命令行获取所有数字 检查它们是否有效 如有必要,打印错误消息 让我们先把2号让开,检查一下有效性 bool isValid(int number) { return (number >= 30 &&am

我知道如何通过命令行传递一个整数,但是如果我需要一个特定范围的整数,我该怎么做呢

例如,我有一个程序,它接受一系列数字并将它们除以五。数字必须在30-105之间,并且必须是5的倍数

如果任何数字超出该范围且不是5的倍数,则会出现错误消息


我该怎么做呢?

你基本上要做三件事:

  • 从命令行获取所有数字
  • 检查它们是否有效
  • 如有必要,打印错误消息
  • 让我们先把2号让开,检查一下有效性

    bool isValid(int number) {
        return (number >= 30 && number <= 105 && number % 5 == 0);
    }
    

    你基本上要做三件事:

  • 从命令行获取所有数字
  • 检查它们是否有效
  • 如有必要,打印错误消息
  • 让我们先把2号让开,检查一下有效性

    bool isValid(int number) {
        return (number >= 30 && number <= 105 && number % 5 == 0);
    }
    

    您可以传递字符串(表示整数——您只能真正传递字符串)。。。从字符串中得到整数值。。。然后你检查它们是否在你想要的范围内。。。如果没有,则打印一条错误消息。你到底对哪个部分有问题?
    if(!(30@Dmitri检查它们是否在范围部分。如果它确实打印了一个错误,它如何返回到提示命令行输入另一个数字?这篇文章将向您展示如何检查传入的参数是否为有效的整数,但您自己的代码需要检查范围并向用户报告错误。@BLUEPIXY我必须使用一个while l吗oop,以便在收到错误消息时返回命令行?您可以传递字符串(表示整数——您只能真正传递字符串)…然后从字符串中获取整数值…然后检查它们是否在所需的范围内…如果不在范围内,则打印错误消息。您到底遇到了什么问题?
    if(!(30@Dmitri检查它们是否在范围部分。如果它确实打印了一个错误,它如何返回到提示命令行输入另一个数字?这篇文章将向您展示如何检查传入的参数是否为有效的整数,但您自己的代码需要检查范围并向用户报告错误。@BLUEPIXY我必须使用一个while l吗oop,以便在收到错误消息时返回命令行?这是否必须是一个while循环,以便再次提示命令行检查“right”数字类型?无法提示命令行;
    argv
    中的所有内容在启动时都是固定的。如果您想让用户输入另一个数字,您需要使用例如
    scanf
    从stdin读取它。如果您使用的是
    bool
    ,则需要将其定义为非标准类型。这需要一段时间吗循环,以便再次提示命令行检查“right”数字类型?无法提示命令行;
    argv
    中的所有内容在启动时都是固定的。如果您想让用户输入另一个数字,您需要使用例如
    scanf
    从stdin读取它。如果您使用的是
    bool
    ,则需要将其定义为非标准类型。
    #include <stdbool.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    int main() {
        int number;
    
        while (true) {
            printf("Enter a number: ");
            scanf("%d", &number);
    
            if (isValid(number)) {
                break;
            } else {
                puts("Not a valid number!");
            }
        }
    
        // do something
    }