【发布时间】:2015-11-16 20:40:50
【问题描述】:
我使用 strtok 从用户输入将数据分配给变量 cmd。如何检测 cmd 是否为空?类似于检查 cmd 是否为 q,如下所示:
void readcmd() {
char read_input[50];
char* cmd;
char* param;
scanf("%[^\n]%*c",read_input);
cmd = strtok(read_input, " ");
param = strtok(NULL, " ");
if (strcmp(cmd, "q") == 0) {
printf("quitting\n");
exit(0);
}
run(cmd, param);
}
【问题讨论】:
-
你说的empty是什么意思?
NULL? -
如果你的字符串中没有任何有效的标记,即单词,第一次调用
strtok会返回NULL。 (并且您应该检查空标记,而不是将它们传递给其他函数。例如,当cmd为NULL时,strcmp(cmd, "q")可能会崩溃。) -
当用户被提示输入时,他们只需按回车键。
-
@MOehm 谢谢,所以只需检查 cmd 是否为 NULL 就足够了吗?
-
是的。如果
read_input为空或仅包含分隔符(在您的情况下为空格),则strtok(read_input, " ")将返回NULL。