gpt4 book ai didi

c - 整数值和负值的 getopt 错误处理

转载 作者:太空宇宙 更新时间:2023-11-04 04:23:36 25 4
gpt4 key购买 nike

如何验证用户是否仅将整数值从命令行传递给 getopt 选项?用户应该只传递正整数值。

Isdigit() 函数在这里不能正常工作。

                case 's' :
flags=1;

start = atoi(optarg);

如何检查开始是否只包含整数值?

                ./prog -scf

默认情况下,当输入任何字符时,它的 s 值为 0,因为我使用的是 atoi 函数,但实际上它应该在传递 cf 时给出错误。

甚至尝试过 strtol() ,但没有用

            start = (int) strtol(optarg, &ptr, 10);

即使我使用 strtol() 函数,它也只有在同时传递数字和字符串时才有效。

            eg ./prog -s5abc        --> this works

eg ./prog -sabc -->does not work

这里再次开始采用 0 值,因为只通过了章程!但如果用户本身传递 0 那么我该如何处理错误?

           eg ./prog -s0        --> s takes 0 value, valid

eg ./prog -sabc --> s takes 0 value , but invalid

最佳答案

当您使用带符号的数字时,应该这样做:

if (optarg[0] != '-' && (optarg[0] < '0' || optarg[0] > '9'))
*error handling*
for (size_t i = 1; optarg[i] != 0; i++)
if (optarg[i] < '0' || optarg[i] > '9')
*error handling*

关于c - 整数值和负值的 getopt 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43862851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com