📜  命令行参数 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:23:00.388000             🧑  作者: Mango

命令行参数 - C 编程语言

在 C 语言编程中,命令行参数可以帮助我们向程序传递参数,这使得我们能够在不更改程序本身的情况下改变程序的行为。本文将介绍如何在 C 语言程序中使用命令行参数。

什么是命令行参数?

命令行参数是指在我们执行程序时,程序接收到的一些参数,这些参数可以影响程序的行为。例如,我们在终端执行程序时,可以在程序后跟上一些参数,例如:

$ ./myprogram arg1 arg2 arg3

其中的 arg1, arg2, arg3 就是命令行参数。

如何在 C 语言程序中使用命令行参数

在 C 语言中,我们可以使用 main 函数来接收命令行参数。main 函数的参数列表通常会有两个参数:argcargv

  • argc 表示传递给程序的参数个数(包括程序本身)。
  • argv 是一个指针数组,其中的每个元素都指向一个字符串,这个字符串是命令行参数的值。

下面是一个简单的例子,演示如何使用 main 函数接收命令行参数:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("argc = %d\n", argc);
    
    for(int i = 0; i < argc; i++) {
        printf("argv[%d] = %s\n", i, argv[i]);
    }
    
    return 0;
}

在上面的例子中,我们使用了 printf 函数输出了命令行参数的个数以及每个参数的值。例如,如果我们执行以下命令:

$ ./myprogram arg1 arg2 arg3

输出会是:

argc = 4
argv[0] = ./myprogram
argv[1] = arg1
argv[2] = arg2
argv[3] = arg3

我们可以看到,argv[0] 存储的是程序本身的名称,而剩下的参数存储在 argv 中。我们可以根据这些参数来影响程序的行为,例如读取文件名、设定变量值等等。

传递参数时使用引号

当命令行参数中存在空格或其他特殊字符时,我们应该使用引号将这些参数括起来,例如:

$ ./myprogram "argument with space" 'argument with single quotes' "argument with \"quotes\" inside"

在程序中,这些参数会被当作一个字符串处理,例如:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("argc = %d\n", argc);
    
    for(int i = 0; i < argc; i++) {
        printf("argv[%d] = %s\n", i, argv[i]);
    }
    
    return 0;
}

输出:

argc = 4
argv[0] = ./myprogram
argv[1] = argument with space
argv[2] = argument with single quotes
argv[3] = argument with "quotes" inside
总结

命令行参数可以让我们在不修改程序本身的情况下改变程序的行为,是非常有用的一个功能。在 C 语言中,我们可以使用 main 函数的 argcargv 参数来获取命令行参数。我们应该注意引号的使用,避免空格和其他特殊字符的干扰。