gpt4 book ai didi

c - 我如何在c中查看带参数的数组是否为空

转载 作者:行者123 更新时间:2023-11-30 20:00:09 24 4
gpt4 key购买 nike

我有这个代码:

  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[])中有多少个字符串,问题是出现段错误,我找不到原因。当我把 NULL 代替“null”时,我得到相同的结果,段错误。args[j] 有问题吗?或者是其他我没有看到的东西?我的阵列不再反弹了?我知道字符串从 args[2] 开始,所以这就是我在代码中放入 j=2 的原因我把头文件#include 放在使用strcmp

最佳答案

"null" 是一个没有特殊含义的字符串文字,NULL 是一个空指针(您也可以写 0) > ),这就是你的意思,但是将其作为字符串进行比较(与 strcmp())没有任何任何意义。您想知道 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.

关于c - 我如何在c中查看带参数的数组是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47459661/

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