我如何查看带参数的数组在 c 中是否为 null
how i can see if an array with arguments is null in c
我有这个代码:
int main(int re, char *args[]){
int comp=1;
int j=2;
int count=0;
//printf("%d",args[1]);
while(comp!=0){
comp=strcmp(args[j],"null");
j++;
count++;
}
}
我想看看我的参数数组 (args[]) 中有多少个字符串,问题是 take 分段错误,我找不到原因。
当我将 NULL 改为 "null" 时,我得到相同的结果,分段错误。
args[j] 有问题?还是我看不到的其他东西?
我在我的阵列中摆脱了反弹?
我知道字符串从 args[2] 开始所以这就是为什么我在代码中放 j=2
我把头文件#include 放在使用strcmp
main函数有两个参数,
int main(int argc, char **argv);
argc
统计参数个数
argv
将参数作为二维数组中的字符串。
所以,你可以说:
if (argc == 1)
{
printf("I'm having 0 arguments in Total");
}
第一个 argc 占用可执行文件的名称 - a.out
- 。所以,如果您没有更改名称,a.out 是第一个参数。
"null"
是一个没有特殊含义的字符串文字,而 NULL
是一个空指针(你也可以为它写 0
),这就是你意思是,但是将它作为一个字符串(与 strcmp()
)进行比较并不会使 any 有意义。你想知道 pointer at args[j]
是否为 null(然后,它没有指向任何东西,所以它不是一个字符串)。
尽管您将 first 参数中的参数数量传递给 main()
无论如何,这几乎总是更易于使用,但 C 标准向您保证 argv[argc]
确实是 NULL
,因此您的方法在正确实施时有效。示例:
int main(int argc, char **argv)
{
int i = 0;
while (argv[i]) // or more explicit while (argv[i] != NULL)
{
puts(argv[i++]); // print this argument
}
}
标准中的相关段落(此处引用 N1570)是 §5.1.2.2.1 p2:
[...]
-- argv[argc]
shall be a null pointer.
我有这个代码:
int main(int re, char *args[]){
int comp=1;
int j=2;
int count=0;
//printf("%d",args[1]);
while(comp!=0){
comp=strcmp(args[j],"null");
j++;
count++;
}
}
我想看看我的参数数组 (args[]) 中有多少个字符串,问题是 take 分段错误,我找不到原因。 当我将 NULL 改为 "null" 时,我得到相同的结果,分段错误。 args[j] 有问题?还是我看不到的其他东西? 我在我的阵列中摆脱了反弹? 我知道字符串从 args[2] 开始所以这就是为什么我在代码中放 j=2 我把头文件#include 放在使用strcmp
main函数有两个参数,
int main(int argc, char **argv);
argc
统计参数个数
argv
将参数作为二维数组中的字符串。
所以,你可以说:
if (argc == 1)
{
printf("I'm having 0 arguments in Total");
}
第一个 argc 占用可执行文件的名称 - a.out
- 。所以,如果您没有更改名称,a.out 是第一个参数。
"null"
是一个没有特殊含义的字符串文字,而 NULL
是一个空指针(你也可以为它写 0
),这就是你意思是,但是将它作为一个字符串(与 strcmp()
)进行比较并不会使 any 有意义。你想知道 pointer at args[j]
是否为 null(然后,它没有指向任何东西,所以它不是一个字符串)。
尽管您将 first 参数中的参数数量传递给 main()
无论如何,这几乎总是更易于使用,但 C 标准向您保证 argv[argc]
确实是 NULL
,因此您的方法在正确实施时有效。示例:
int main(int argc, char **argv)
{
int i = 0;
while (argv[i]) // or more explicit while (argv[i] != NULL)
{
puts(argv[i++]); // print this argument
}
}
标准中的相关段落(此处引用 N1570)是 §5.1.2.2.1 p2:
[...]
--argv[argc]
shall be a null pointer.