我最近开始学习C语言,所以我对C的功能不太了解。

最近在网上看到一篇用C写的程序的文章。它是这样的:-

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    int i = 0;
    int j = 0;
    char ch;

    ch = getopt(argc, argv, "n:");
    if(ch == 'n')
    {
        j = atoi(optarg);
    }

    while(j--)
    {
        printf("%i\n",j);
    }
    return 0;
}

谁能说出 argc 函数中 getopt() 的实际用途是什么?它是否使用 argc 来读取选项?

最佳答案

C 标准确实保证 argv[argc] 是一个 NULL 指针:

C 标准,第 5.1.2.2.1.2 节:



从技术上讲,您(以及函数 getopt )真正需要的是 argv - 像这样的东西将处理所有参数:

int i;
for(i = 0; argv[i]; i++)
{
    puts(argv[i]);
}

但是,没有什么可以阻止您(或 getopt 的作者)使用 argc 作为循环保护。这同样有效:
int i;
for(i = 0; i < argc; i++)
{
    puts(argv[i]);
}

因此,如果函数说它需要传递 argc,则将 argc 传递给它,因为它可能使用它来形成那种类型的循环。

关于c - 为什么我们在 getopt() 函数中使用 argc 作为参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60056635/

10-12 22:21