【问题标题】:Command line argument explanation and program error [closed]命令行参数解释和程序错误[关闭]
【发布时间】:2014-07-04 09:14:49
【问题描述】:

我已经阅读了许多与此主题相关的 stackoverflow 问题,但仍然没有得到它。请解释正确使用命令行参数。它们是在代码开始执行时传递的,是我们关注的重点吗?但是有什么用。请链接到这种类型的一些信息性问题,我可以在其中完全阅读和理解该主题。谢谢

#include <stdio.h>

main(int argc,char *argv[])
{
int i;
for(i= 1; i<argv; i++) \\error argument count should be used instead argument vector
    printf("%s%s", argv[i], (i< argc-1) ? " " : "" );
printf("\n");
return 0;
}

【问题讨论】:

  • 我假设您想在for 循环中使用i&lt;argc(而不是i&lt;argv)。 argc 变量是程序接收的参数数量,而变量 argv 保存参数。
  • 哎呀抱歉我读了六个小时,此时我已经筋疲力尽了:(非常感谢@SleuthEye的帮助
  • 我强烈建议下次运行您的程序时出现警告,因为这种错误很常见。在gcc 上,它的-Wall 选项
  • 大量关于命令行的信息,以及为什么你会在简单的谷歌搜索中使用它,例如:thegeekstuff.com/2013/01/c-argc-argv
  • 我看不到 printf 应该打印字符串....如果我将“任何字符串”打印为 argv[i],我该怎么做?

标签: c command-line-arguments


【解决方案1】:

命令行参数用于在程序运行时将信息传递给程序,而无需用户/脚本启动它的任何额外交互。这可以包括诸如程序正在处理的文件的路径或用于定义其配置和行为的标志之类的内容。

通过使用这些而不是 scanf 等功能,用户可以更轻松地自动启动它,并将其与其他程序集成。

编辑:最初的问题包含一个错误的代码,其中 argv 被意外地用来代替 argc,我将把问题的那部分的答案留给后代:


您的 for 循环行应如下所示:

for(i= 1; i<argc; i++)

argc 给出已传递给程序的参数数量。在您发布的代码中,您试图将计数器与argv 进行比较,argv 是指向内存中保存参数的空间的指针。对计算机来说,这看起来像一个整数,所以它“有效”,但绝对不是你想要的。

【讨论】:

  • *绝对不是 - 你是这个意思吗?
  • 编辑了我的错误问题。现在请回复一个编辑过的答案。谢谢@thip
  • @Andrew_CS 哎呀,修复了!感谢现场!
  • @AbhimanyuAryan 我已经更新了我的答案,这有帮助吗?此外,我认为将 argv 留在原始代码中是值得的:a)问题标题更有意义,b)这是一个容易犯的错误,留下它可能对未来的人们有所帮助
猜你喜欢
  • 1970-01-01
  • 2016-08-07
  • 2014-11-07
  • 1970-01-01
  • 2010-10-26
相关资源
最近更新 更多