[英]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.