【问题标题】:Allowing parameters to be given in terminal for a C program [closed]允许在终端中为 C 程序提供参数 [关闭]
【发布时间】:2013-09-05 05:10:10
【问题描述】:

如何在通过 Linux 终端执行程序时要求传递参数?

这是在 C 中,特别是。

为了更好地解释.. 在终端中,我需要能够运行程序 像这样

./程序 文件名 secondParameter

如果没有给出参数,也需要返回错误信息,然后停止程序运行。

如果需要,我可以提供更多信息,这似乎是一个非常直接的问题。

【问题讨论】:

  • 了解main()语法main(int argc, char* argv[])
  • @GrijeshChauhan:你的意思是int main(int argc, char *argv[])。或者,完全相同但更清晰:int main(int argc, char **argv)
  • 在 C 教科书的索引中查找 argcargv
  • @KeithThompson 是的! ,@佐尔卡:阅读 1:Arguments to main in C 2:10.2. Arguments to main 3:Wiki: main()

标签: c linux parameters terminal


【解决方案1】:

argc 的简单检查可以满足您的需求:

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

  if(argc != 3)
  {
    printf("Usage error. Program expects two arguments. \n");
    printf("Usage: ./program FILENAME secondParameter \n");
    exit(1);
  }
/* Rest of your code */

}

您需要了解在 C 中传递给 main() 的参数。argv[0] 是程序名称,因此条件是 argc != 3,即如果您提供的参数少于或多于 2 个,则会出现用法错误.

【讨论】:

  • 啊,好吧。我已经有几个月没有写任何代码了,所以我有点生疏了。是否可以使用 perror() 返回生成的错误消息,而无需我输入实际的错误消息?我被告知使用 perror 和 errno 来处理错误。
  • perror 从errno 中检索有关系统调用/库调用失败的详细信息。你的不是这样的失败,而是一个用户定义的错误,它不会设置任何 errno 除非你自己设置(我不建议你这样做)。 perror 不能神奇地期望知道用户定义的使用错误。所以我不建议使用 perror。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 2011-01-12
相关资源
最近更新 更多