使用命令行参数检查范围

Zen*_*net 1 c command-line-arguments type-coercion

在一个简单的C程序上工作我坚持使用if测试:

int line_number = 0;
if ((line_number >= argv[2]) && (line_number <= argv[4]))
Run Code Online (Sandbox Code Playgroud)

gcc说:

cp.c:25: warning: comparison between pointer and integer
cp.c:25: warning: comparison between pointer and integer

我该怎么做才能正确检查我想要处理的行数范围?

Jac*_*ack 8

当然它不起作用:argv是一个指向指针的指针char..它不清楚你想做什么,但想想这argv[2]是第三个参数,argv[4]是第五个参数.但它们是char*类型(它们是字符串)所以如果你想将它们解析为整数,你应该使用函数来完成它atoi:

int value = atoi(argv[2]);
Run Code Online (Sandbox Code Playgroud)

将解析作为第三个参数的int并将其放入变量,然后您可以检查您想要的任何内容.

  • 好吧,你可能*应该*使用`strtol`来做.`atoi`更容易使用,但更难处理不良输入. (3认同)