C 中的命令行参数解释

已发表: 2022-04-29

当需要从外部而不是内部控制程序时,使用命令行参数。 它是供开发人员使用的文本接口,其中参数直接传递给主要方法。

调用函数时在函数内传递的值称为参数。 换句话说,参数是在调用时传递给给定方法的参数。

语法

int main() { /* … */ }

上面的代码接收命令并将其传递给计算机的操作系统运行。 这些命令总是在代码被执行时被调用。

CC 和 C++ 命令行参数非常容易实现,因为它们简单且易于理解的语法。

要传递命令行参数,主函数需要由两个参数定义:

  1. 命令行参数的总数
  2. 命令行参数的完整列表

语法

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

  1. argc (ARGument Count)被定义为一个整数数据类型,用于存储命令行参数的总数。 可以理解,这应该始终是一个非负值。
  2. argv (ARGument Vector)表示字符数据类型的指针数组,用于存储整个命令行参数列表。

在命令行的帮助下,开发人员可以访问他们计算机上的一系列文件和文件夹。 包含多个命令行参数的给定程序可以快速识别给定数据的来源或目的地。 它也有可能改变程序的功能。 它使构建过程更容易置于源代码控制中。

在开发领域,广泛的任务不需要实际的可视化。 在这种情况下,所有功能都可以在命令行参数的帮助下执行。 对文字图形界面的需求非常少。 这有助于节省大量资金、精力和资源。

从世界顶级大学学习在线软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

目录

属性 | C 中的命令行参数

命令行参数有很多有趣且有用的属性。 它们如下:

  • 要打印程序的名称,命令必须是argv[0]
  • argv[argc]本质上是一个空指针
  • 要打印用户提供的第一个参数,命令必须是argv[1]
  • 用户从终端传递命令行参数
  • 这些命令的使用是从外部控制程序,而不是对程序内部的值进行硬编码
  • 命令行参数始终传递给 main() 函数
  • 第一个命令土地参数是 argv[1],而最后一个命令是 argv[n]

命令行参数示例

以下是 C 中命令行参数的演示程序:

// C程序来说明

// 命令行参数

#include<stdio.h>

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

{

整数计数器;

printf("程序名称是: %s",argv[0]);

如果(argc==1)

printf(“\n没有传递除程序名称以外的额外命令行参数”);

如果(argc>=2)

{

printf(“\n传递的参数数量: %d”,argc);

printf(“\n——以下命令行参数是否通过——”);

for(counter=0;counter<argc;counter++)

printf(“\nargv[%d]: %s”,counter,argv[counter]);

}

返回0;

}

输出根据不同的场景而有所不同。 它们已分别进一步解释。

  1. 没有论据:

要产生以下输出,必须在不传递参数的情况下执行代码:

输出 1

$ ./a.out

程序名称是:./a.out

除了程序名称之外,没有传递额外的命令行参数

  • 有三个论据:

要产生以下输出,必须使用三个参数执行代码。

输出 2 –

$ ./a.out 第一 第二 第三

程序名称是:./a.out

通过的参数数量:4

----以下是通过的命令行参数----

argv[0]: ./a.out

argv[1]:第一

argv[2]:第二

argv[3]:第三

  • 使用一个参数:

代码需要使用单个参数进行编译和执行,该参数必须用空格分隔,同时位于引号内以产生以下输出。

输出 3 –

$ ./a.out “第一第二第三。”

程序名称是:./a.out

通过的参数数量:2

----以下是通过的命令行参数----

argv[0]: ./a.out

argv[1]:第一第二第三

  • 使用引号中的单个参数并用空格分隔:

代码必须使用由空格分隔但在单引号内的单个参数编译和执行,以产生以下输出。

输出 4 –

$ ./a.out '第一第二第三'

程序名称是:./a.out

通过的参数数量:2

----以下是通过的命令行参数----

argv[0]: ./a.out

argv[1]:第一第二第三

C 中命令行参数的优点

在 C 中使用命令行参数有几个好处。它们如下:

  • 当程序员或用户想要从内部而不是在内部将值传递给程序时,可以使用 C 中的命令行参数。
  • 命令行应用程序可以很容易地用于批处理文件或脚本。 在涉及自动化测试或构建时,这是一个巨大的帮助。
  • 如果程序员编写工具而不是使用它们,则命令行更容易开发。 输入参数被认为是比输出文本流更复杂和耗时的任务。
  • 当可以从各种文件和应用程序发送或接收信息时,可以很容易地重定向输入、输出和错误流。
  • 命令行参数中的错误返回机制非常标准和简单。
  • 当程序员或用户试图在家中或路上访问时,基本上是在移动时,通过远程外壳或其他类似连接使用至少可以更轻松地执行任务。
  • 对于指定多个文件的功能,存在定义的通配符语法标准,它借鉴并依赖于开发人员或程序员的现有知识。
  • 命令行引人注目且速度极快。

谈到各种命令行参数的优点,以下是另一个详细的示例或演示如何实现它们。

#include <stdio.h>

#include <conio.h>

//调用main方法,将命令行参数传递给程序

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

{

//定义一个整数变量

诠释一个;

//如果应用条件来检查传递给程序的参数计数是否大于或等于两个,如果条件为真,则打印传递给程序的命令行参数。 否则,没有参数传递给程序被打印

如果(argc >= 2)

{

printf(“传递给程序的参数是:\n”);

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

{

printf("传递给程序的参数是:%s\t", argv[a]);

}

}

别的

{

printf("没有参数传递给程序\n");

}

返回0;

}

输出:

没有参数传递给程序。

命令行参数通过调用 main 方法传递给上述代码中的程序。 下一步是定义整数变量。 接下来,传递条件以检查传递给程序的参数计数是否大于或等于 2。如果条件为真,则打印传递给程序的命令行参数。 如果不是,则不将任何参数传递给程序并打印。

结论

通过注册 upGrad 的软件开发执行 PG 计划 - 全栈开发专业化,了解有关 C 和 C++ 中命令行参数的重要性的更多信息 为期 13 个月的课程旨在帮助有抱负的 IT 专业人员掌握 Java、Spring、Hibernate、HTML、React、Git 以及一系列其他编程语言和工具,以构建 Quora 和 Swiggy 等复杂应用程序。

该计划还提供为期 4 个月的免费数据科学和机器学习高管认证。

程序员在 C 中实现命令行参数时必须面对的基本缺点是什么?

尽管 C 中的命令行参数对开发人员和程序员来说很方便,但它们确实存在一些缺点。 不具备基本知识且不习惯使用这些命令的人可能很难学习和适应,尤其是在短期内。 但是,这对于高级程序员和开发人员来说不是问题。 但事实证明,有时这对可能来自不同或相邻领域的初级员工来说是一个障碍。 此外,命令行参数需要一个键盘来实现和执行。 如果有人需要通过手机或 iPad 等访问它,这通常会成为障碍。

哪些是用于分隔命令行参数的分隔符?

为了分隔命令行参数,通常使用空格。 它们将命令名称与其参数分开,并将各种参数彼此分开。 它们在分隔不同值的列表时也会派上用场。 多空白通常被视为单个空白。 唯一的例外发生在带引号的字符串或用单引号括起来的注释中。

是否可以转换命令行参数?

所有命令行参数都作为字符串传递。 程序员或用户必须始终使用人工将数值转换为其内部形式。 主函数总是接收它的参数,通常是一个字符串数组。 这是 main 函数接受的唯一函数参数。 在存储命令行参数时使用字符串数据类型。