【发布时间】:2021-02-11 20:21:58
【问题描述】:
我正在开发一个接受一个命令行参数的程序,我只希望它接受数字。我希望它返回 1 并打印“Usage: ./caesar key”,如果有任何不是数字的东西,例如,如果用户在命令行中输入 20x 而不是 20。我已经为它创建了一个代码但发现即使命令行参数仅包含数字,它也会返回 1 并打印“Usage: ./caesar key”。有人对如何解决这个问题有一些建议吗?
for (int i = 0, len = strlen(argv[1]); i < len; i++)
{
if (isdigit((char)argv[i]) == false)
{
printf("Usage: ./caesar key");
printf("\n");
return 1;
}
else
{
printf("success");
}
}
【问题讨论】:
-
试试
isdigit((char)argv[i])-->isdigit(argv[1][i]) -
@chux-ReinstateMonica 谢谢我对命令行参数和数组还很陌生,所以我整天都被困在这个问题上。这似乎已经解决了!
-
现在很清楚为什么它会修复问题?
-
但是
isdigit(argv[1][i])只检查参数的第一个字符而不是全部,不是吗? -
@JerryJeremiah 是的 - 只有 1 个字符
标签: c