命令 Line C 中的参数

在这个 Linux 在本文中,您将了解 C 语言中的命令行参数是什么。 在本文中,我们将解释什么是命令行参数、如何访问它们以及如何使用它们创建发送或接收这些类型参数的可执行程序。

您还将了解当您从命令控制台启动应用程序时如何发送参数。 在另一节中,我们将学习如何将命令行参数转换为 C 中使用的各种数据类型,因为这对于释放其全部潜力至关重要。

命令 Line C语言中的参数

C 编程允许您创建发送或接收命令行参数的程序。 命令行参数是在执行开始时传递给进程的参数。 这些参数可以由父进程在启动子进程时发送给子进程,也可以由用户在启动应用程序时发送。 发送和接收此类参数是使用链完成的,每个链都指向一个向量化的指针数组。

如何发送命令 Line 论据来自 Linux 安慰

在本节中,我们将向您展示如何运行应用程序并发送参数 Linux 安慰。

使用以下语法启动可执行文件并从命令行参数发送它 Linux 安慰:

/文件名。更新 参数1 参数2 参数..

可执行文件的名称和扩展名必须以“”开头。./” 字符和参数必须用空格分隔。

接收命令的应用程序 Line C语言中的参数

命令行参数以字符串格式到达进程,应用程序可以通过指针向量访问它们,其中每个指针都指向一个参数。 下面我们看到 main() 函数的原型,它使用接收命令行参数的应用程序:

整数 主要是 整数 精氨酸, 字符 *精液[]

精氨酸[] Argument 是指向字符串的指针数组的向量,每个字符串都包含一个接收到的输入参数。

数组的第一个参数始终是包含可执行文件名称的字符串,而最后一个参数是指向 NULL 的指针,并标记接收到的参数列表的末尾。 下面我们看到一个表格,显示了命令行参数列表是如何在数组中组织的:

精液[0]文件名(列表开头)
精液[1]论据1
精液[2]论据2
精液[n]……论证 n…
精液[n+1]NULL(列表末尾)

输入参数“argc”是一个整数,其中操作系统指定进程接收的参数数量,并且可以在条件或循环中使用以确定参数列表的末尾。

如何访问命令 Line C语言中的参数

接下来我们就来看看 example 它使用 printf() 函数通过 argv 访问接收到的命令行参数来显示它们[] 向量和充当索引的整数。

它的代码 example 由一个“for”循环组成,该循环声明索引变量并为其分配值 0。 循环每完成一个循环,索引整数就加一,有两个作用。 它索引 argv[] 向量,当其值等于“argc”时确定循环退出条件。 下面我们看到这个的代码 example:

#包括
#包括
#包括

整数 主要是整数 精氨酸, 字符 *精液[]

{
为了 整数 指数 =0;指数 != 精氨酸; 指数++

{

打印函数 “参数%i:%s, 指数, 精液[index];

}

}

现在我们编译这段代码并将其输出保存为“example”名称和“.bin”扩展名如下所示:

通过这种方式,我们创建了“example.bin”可执行文件,可以接受无限数量的命令行参数并将它们显示在屏幕上。

现在我们运行应用程序并通过命令控制台发送其参数。 下图显示了发送参数后应用程序的执行情况:

如何转换命令 Line C语言中的参数

正如我们已经看到的,命令行参数仅以字符串的形式发送和接收。 因此,如果我们想要处理不同类型的数据,我们需要进行转换。

在本节中,我们将向您展示如何将接收到的字符串转换为数值并将其存储在 int、double、long 和 long long 类型变量中。 为此,C语言提供了许多将字符串的数值转换为各种数据类型的函数。 接下来,我们看一下 stdlib.h 标头中定义的函数表,这些函数用于将数值从 ASCII 字符串转换为各种数据类型:

功能描述
阿托伊()将字符串转换为整数
阿托尔()将字符串转换为长字符串
环礁()将字符串转换为长字符串
阿托夫()将字符串转换为双精度型

该函数系列将其输入参数中指向的字符串转换为其数值,并以 int、long、long long 或 double 数据类型返回。

下面我们看到一个 example 我们使用atoi()函数将接收到的第二个和第三个参数转换为整数,并将转换后的值存储在int类型的变量“a”和“b”中。然后我们对两个变量进行求和运算并显示屏幕上的结果:

#包括

#包括

#包括

整数 主要是整数 精氨酸, 字符 *精液[]

{

整数 A,;

打印函数 “%S, 精液[0];

A = 阿托伊精液[1];

打印函数 “%我, A;

= 阿托伊精液[2];

打印函数 “%我,;

打印函数 “%i + %i = %i, A,, A +;

}

下面我们看到应用程序的执行,参数转换为整数并显示在屏幕上:

带有发送订单的应用程序 Line C 中的参数

如前所述,命令行参数在应用程序启动时发送。 在 C 语言中,有多种通过代码和发送参数来启动应用程序的方法。 在下面的示例中,我们将了解 C 语言中用于此目的的两种最实用的方法。

方法一:

最常见的方法是使用 fork() 函数复制进程,然后使用 execv() 函数将其替换为我们想要运行的可执行文件。 通过这种方式,我们打开一个子进程,并向其发送命令行参数。 我们看到 execv() 函数的原型如下:

整数 执行程序常量 字符 *路径名, 字符 *常量 精液[];

正如我们在原型中看到的,execv() 函数也使用了 argv[] 向量作为输入参数。 此函数将调用进程替换为由其绝对路径、名称和路径名中的扩展名指定的可执行文件,并向其发送包含其指针在 argv 数组中指向的命令行参数的字符串[]。

我们接下来看一个 example 我们使用 fork() 函数创建一个子进程,然后将其替换为“example我们在第一个文件中使用的.bin”可执行文件 example。 在下面的代码中,我们看到指针数组的声明、将字符串分配给命令行参数以及对 execv() 函数的调用:

#包括

#包括

#包括

空的 主要是
{

如果 ==0

{打印函数 “从属 PID:%i, 获取pid;

字符 *指针参数[5];

指针参数[0] = “example。容器”;

指针参数[1] = “你好”;

指针参数[2] = “世界 ”;

指针参数[3] = “你好 ”;

指针参数[4] = “Linux 方法”;

指针参数[5] =;

执行程序 “/home/linuxways/example。容器”, 指针参数;

}

不同的

{

打印函数 “父 PID:%i, 获取pid;

睡觉5;

}
}

下图显示了这段代码的执行情况:

正如我们所看到的,这段代码打开了“example.bin 可执行文件由 PID 11329 标识,并向其传递分配给指针数组 Ptr_arg 的命令行参数。

方法二:

第二种方法是启动可执行文件并使用 system() 函数将其与命令行参数一起传递。 我们将看到这个函数的原型如下:

整数 系统 常量 字符 *命令;

此系统调用在系统中执行在命令输入参数中发送的命令。 因此,要启动可执行文件或使用此函数运行代码,我们需要使用以下语法:

系统“./文件名.扩展名 参数1 参数2 参数..n”);

以下代码使用 system() 函数来“example.c” 代码导致“example我们在第一个文件中看到的.bin”可执行文件 example 本文的内容并通过两个命令行参数传递它:

#包括

#包括

#包括

空的 主要是

{

系统 “./example.c 你好世界”;

}

下图显示了这段代码如何开始执行example.c”,它访问接收到的参数并将它们显示在控制台中:

文凭

在这个 Linux 在方法文章中,我们刚刚向您展示了 C 语言中的命令行参数。 我们了解了它们的用途、格式以及 argv 如何[] 使用向量。

为了确保您了解有关本主题的所有内容,我们讨论了如何创建和发送接收命令行参数的应用程序,以及如何运行它们并从命令控制台发送参数。