如果在命令行中没有给出参数,则C会产生错误

时间:2016-02-14 18:53:25

标签: c command-line scanf

在C中,如果在命令行上没有给出参数,我怎么能产生错误?我没有使用int main(int argc , * char[] argv)。我的主要没有输入,所以我使用scanf("%d", input)

获取变量

3 个答案:

答案 0 :(得分:3)

您的问题不一致:如果您想从命令行获取参数,则必须使用mainargc定义argv

main的原型不正确,应该是:

int main(int argc, char *argv[])

如果程序在没有任何命令行参数的情况下运行,arc将具有值1。你可以这样测试:

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("error: missing command line arguments\n");
        return 1;
    }
    ...
}

如果使用main定义int main(void),则无法对命令行参数进行可移植访问。读取标准输入与命令行参数无关。

答案 1 :(得分:1)

鉴于代码:

#include <stdio.h>

int main() {
  int input;
  int rc = scanf("%d", &input);
}

我们可以通过检查其返回值来验证scanf()是否能够成功地从用户那里获得一些输入。只有当rc == 1让用户正确地给我们有效的输入时。

如果您想了解更多信息,建议您阅读scanf's documentation

答案 2 :(得分:0)

嗯,您的main参数的定义如下:

  • argc是参数的数量
  • argv是参数字符串

这意味着您只需要检查argc是否等于1(仅程序名称)并输出错误; - )

如果您仅使用int main(),则无法知道。