我理解如何通过命令行传递一个整数,但是如果我需要一个特定的整数范围,我该如何做呢?
例如,我有一个程序接受一系列数字并将它们除以5。数字必须在30-105之间,并且必须是5的倍数。
如果超出该范围的任何数字且不是5的倍数,则会出现错误消息。
我该怎么做?
答案 0 :(得分:2)
你基本上要做三件事:
首先让我们排除第2位,检查有效性。
bool isValid(int number) {
return (number >= 30 && number <= 105 && number % 5 == 0);
}
此功能检查给定的数字是否符合您的标准;大于或等于30,小于或等于105,并可被5整除。现在,我们必须使用该函数来验证参数。
要做到这一点,我们必须遍历所有这些并检查它们是否有效,并在第一次错误时中止。
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
for (int i = 1; i != argc; ++i) {
int number = atoi(argv[i]);
if (!isValid(number)) {
puts("Error!");
break;
} else {
// do something
}
}
}
如果您想保留有效数字,则必须将它们存储在else
- 分支的数组中。
修改强>
阅读你的评论让我觉得你不想从实际的命令行中获取数字(如在./myProgram 30 40 50
中),而是从程序本身的提示中获取数字。
一次获得一个号码,我们必须:
我们可以在一个函数中隔离它,但为了保持简短,我不会那样做并且无耻地将它放在main
中。
#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
}