字符串如何成为布尔值?
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
中变为假。
因为 command[i]
指的是 char *
,如果非空则被认为是 1
,如果是空则被认为是 0
。
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
中变为假。
因为 command[i]
指的是 char *
,如果非空则被认为是 1
,如果是空则被认为是 0
。