【问题标题】:The Length of envp in CC中envp的长度
【发布时间】:2011-08-11 04:22:59
【问题描述】:

在学习 C 的过程中,我正在尝试编写一个程序,该程序接受您的环境变量之一作为输入,并输出其值。

问题是,有没有办法知道 envp 的长度?我的意思是,有多少个envp?我知道它是一个 char** - 一个字符串数组。和finding the size of array in C is problematic 已经。我该怎么做才能知道 envp 的大小?

请提供方向,而不是具体的答案(或代码)。

【问题讨论】:

  • envpchar**,但它不是“字符串数组”。它是指向指针数组的第一个元素的指针,每个指针都是指向字符串(的第一个字符)的指针——除了最后一个,它是一个空指针,因此不指向任何东西。

标签: c


【解决方案1】:

它被一个 NULL 指针终止。想知道长度就得数一下。

【讨论】:

  • 或者,在 OP 的情况下,您可以将终止条件作为 envp[i] == NULL 进行迭代。无论如何,您都必须遍历元素才能找到您想要的元素,您并不真正需要那个长度。
  • @Chris 我不确定当问题特别要求提示时有多明确。我想现在 OP 很满意,我可以为未来的访问者编辑。
【解决方案2】:

argv[argc] == NULL 的值应该会给你一个线索。

【讨论】:

  • 这需要对一致性有信心:POSIX 环境向量的结构类似于 ISO C agrument 向量。一个人对一致性的信念每天都受到软件的严格考验。 :) :)
【解决方案3】:

您应该查看getenv()。它比操作 envp 更便携,因为像 plan9 这样的环境以不同的方式实现环境,同时保留了这个函数的行为。

【讨论】:

  • 是的,但是getenv() 无法告诉您定义了哪些环境变量。如果您已经知道变量的名称,getenv() 很好;如果没有,则需要遍历envp指向的数据结构。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 2014-06-29
  • 2020-06-18
  • 2011-02-20
  • 2021-07-11
相关资源
最近更新 更多