字符串如何成为布尔值?

How can a string be a boolean value?

char **commands = parse_line( input, ';' );
int i = 0;
while ( commands[i]) {
  /* Runs some functions, commands[i] not affected */
  i++;
}

Header 对于 parse_line

char **parse_line(char *line)

在 while 循环中,command[i] 真的可以吗?

char *line 类似于 ls -l\n.

注意:由于用户在输入终端命令后必须按 RETURN,因此包含 \n

在您的代码中,commands[i] 将解析为类型 char *,即指针。

  • 如果一个指针的值不是 NULL,它将被视为 TRUE。
  • 如果指针为NULL,则视为FALSE

用于条件检查。

C 中,任何非零值都表示为真。因此,对于所有值不是 0 的字符指针,条件都成立。

如果 commands[i] = NULL - 那么这个条件在 C 中变为假。

Null pointer

因为 command[i] 指的是 char *,如果非空则被认为是 1,如果是空则被认为是 0