gpt4 book ai didi

C while 循环调用++ 当它是一个 char

转载 作者:太空狗 更新时间:2023-10-29 15:33:14 25 4
gpt4 key购买 nike

我找到了这个函数,但我不明白它的某些部分。我有大约 3 天的 C 经验,所以请耐心等待。此函数用于解析命令行参数。

  1. 为什么他们将 *arg 重新分配给 *c

  2. 我不明白他们为什么要运行 while 循环。

  3. 其次,为什么他们会对 char 指针运行 while 循环?我知道 char 实际上是一个字符数组,但我的理解是他们只会对 char 运行 while 循环来单独访问数组字符值,而他们不会执行任何操作。

  4. 如何对字符递增?

  5. 为什么我们还要有 *c?

  6. 我添加了字符串检查以查看 arg 是否为 -styles 例如,它有一个 - 这样我就可以解析标志并获取值,它是 argv 中的下一个 arg - 是否正确使用?

就像我说的,我有大约 3 天的 C 经验,所以请尽可能彻底和有条不紊地提供帮助,以帮助我更好地理解这个函数和 C 的整体。

void print_args(int argc,char *argv[])
{
int i;
if(argc > 1){
for(i=1;i<argc;i++){
char *arg = argv[i];
char *c = arg;
while(*c){
if(strchr("-", *c)){
printf("arg %d: %s -> %s\n",i,arg,argv[i+1]);
}
c++;
}
}
}
}

最佳答案

1)arg赋值指向当前char数组的头部,c用于遍历数组。

2,3,5) while 循环一直运行到 c 指向 (char)0,顺便说一句,它也是 \0 .所以实际上它们遍历了 char 数组中的每个字符,直到它们到达空终止符。更好的条件是 while (*c != '\0'),而不是隐含地依赖 '\0' == 0

4) 它们递增一个指针,从而使其指向下一个存储单元,即下一个数组单元。

6) 您的添加将作为识别选项的测试,您仍然需要将它与 -styles 进行比较,以查看它确实是一个有效的选项。

此代码示例可以进行大量修复以使其更健壮和更清晰。如果这是来自书籍或 C 教程,我建议您寻找另一本。

关于C while 循环调用++ 当它是一个 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546866/

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