繁体   English   中英

getopt错误处理整数值和负值

[英]getopt error handling for integer values and negative values

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

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

                case 's' :
                    flags=1;

                    start = atoi(optarg);

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

                ./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*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM