【发布时间】:2018-04-15 21:27:56
【问题描述】:
我正在尝试创建一个要求用户输入有效整数作为命令参数的程序。我已经尝试了所有我能想到的东西,但我无法让它发挥作用。我经历了大概 10 种不同的功能,每一种都被刮掉,因为我可以对其进行调整以使其正常工作。
这是我目前拥有的..
int checkdigit(char *argv) {
int i = 0;
for(i = 0; i <= strlen(argv); i++) {
if (argv[i] >= 48 && argv[i] <= 57) {
i++;
} else {
printf("Not valid");
return 1;
}
}
return 0;
}
无论我给出什么,这都会打印“无效”。
【问题讨论】:
-
您正在跳过每个有效数字后的每个字符。
-
有两个
i++删除一个。 -
从你的参数名称来看,你可能误解了使用命令行参数的整个概念。看看这里stackoverflow.com/a/47536091/7733418
-
不要使用像 48 和 57 这样的“幻数”,这会使代码更难阅读。请改用正确的字符常量:
if(argv[i] >= '0' && argv[i] <= '9')。如果 for 循环中的条件是<= strlen(argv),那么您将读取'\0'-终止字节。正确的条件应该是< strlen(argv).#
标签: c