我希望能够将任何无符号长整数作为我的程序的参数。考虑这个简化版本。
int main (int argc, char* argv[]){
unsigned long int steps;
sscanf(argv[1], "%lu", &steps);
printf("n is %lu \n",steps);
}
我遇到的问题是,如果你给它-10它将返回ULONG_MAX - 10,是否有一个优雅的解决方案,它将在范围内返回整数,0表示所有其他情况。根据我的阅读,我可能需要以某种方式使用正则表达式的fgets,也许这是最好的解决方案?
答案 0 :(得分:1)
您可以使用atol()
并检查返回的值。这是一个小例子:
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char **argv)
{
unsigned long int steps = 0;
if (argc > 1)
{
if (atol(argv[1]) > 0)
steps = atol(argv[1]);
}
printf("%lu\n", steps);
return 0;
}