我最近开始学习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/