【发布时间】:2021-01-06 12:54:04
【问题描述】:
我正在尝试错误检查命令行参数以确保它们是整数,但令人惊讶的是,这样做很困难。这是我的一个 sn-p 代码,当所有命令行参数都是整数时,它可以工作。
程序可以有无限的值传递给它。
一个例子:./program -p 45 67 3 9 1
for (argCounter = 2; argCounter < argc; argCounter++)
{
total = total * atoi(argv[argCounter]);
}
当用户输入5g 时会发生什么? atoi() 将其转换为 5。我需要它返回错误。出于某种原因,我无法让isdigit() 也正常工作。我尝试了很多随机的东西,以至于我的头在这一点上旋转。所以我想做的是:
for (argCounter = 2; argCounter < argc; argCounter++)
{
//pseudocode
if (argv[argCounter] != integer)
{
printf("Error!");
return 0;
}
total = total * atoi(argv[argCounter]);
}
【问题讨论】:
-
您的问题是“如何检查字符串中的每个字符是否都是数字?”。
strol的文档可能解释了如何检查整个字符串是否为有效整数。 (见here,如果调用后*endptr==0,则解析整个字符串。) -
blindside044 请不要在以下 2 个地方用无意义的“无效”发表评论。最好说明使用的输入、看到的输出和预期的输出。更好的是,这个问题应该有一个minimal reproducible example。