gpt4 book ai didi

c - 查找 argv 中的参数数量?

转载 作者:行者123 更新时间:2023-11-30 16:56:09 27 4
gpt4 key购买 nike

像这样简单的事情:

int main(int argc, char* argv[]) {
int size = sizeof(argv);
printf("%d", size);
}

如果我向它传递 5 个参数,它会告诉我有 4 个参数。如果我向它传递 10 个参数,它会告诉我有 4 个参数。这里有问题还是我的编译器搞砸了?

最佳答案

int size = sizeof(argv);

这不会为您提供 argv 数组中的参数数量,而是为您提供 argv 变量的大小(以字节为单位)。在我回答这个问题时,指针通常是四个或八个,在您的特定情况下显然是四个。

如果您想知道 argv 中有多少项,这正是 argc 的用途。

argc 整数保存参数的数量,包括通常代表正在运行的程序的第一个参数。因此,您可以使用如下循环获取参数:

#include <stdio.h>
int main(int argc, char *argv[]) {
for (int i = 0; i < argc; ++i) {
printf("Argument #%d is %s\n", i, argv[i]);
}
return 0;
}

使用某些参数运行它会显示它的实际效果:

pax$ ./testprog abc def 123 789
Argument #0 is ./testprog
Argument #1 is abc
Argument #2 is def
Argument #3 is 123
Argument #4 is 789

另一种方法,由于强制要求 argv[argc] 必须是 NULL 指针,因此绕过计数并直接检查值:

#include <stdio.h>
int main(int argc, char *argv[]) {
for (char **arg = argv; *arg != NULL; ++arg) {
printf("Argument is %s\n", *arg);
}
return 0;
}

输出略有不同,因为我没有使用计数器,但参数完全相同:

pax$ ./testprog pax diablo
Argument is ./testprog
Argument is pax
Argument is diablo

关于c - 查找 argv 中的参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40036413/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com