字符串如何成为布尔值?

时间:2015-11-30 06:09:01

标签: c string pointers while-loop boolean

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

parse_line

的标头
char **parse_line(char *line)

在while循环中,command[i]实际上是否真的可以?

char *line会像ls -l\n一样。

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

3 个答案:

答案 0 :(得分:2)

由于command[i]引用char *,如果为非空,则将其视为1,如果为空,则视为0

答案 1 :(得分:1)

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

  • 如果指针的值为NULL,则将其视为TRUE。
  • 如果指针为NULL,则将其视为FALSE。

用于条件检查。

答案 2 :(得分:1)

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

如果commands[i] = NULL - 则此条件在C中变为false。

Null pointer