我需要实现一个简单的 CLI,它最初会读取一个字符,然后会读取字符指定的命令的第二部分,甚至第三部分。
例如,这些将是命令:
1. p all
2. r code
3. h
4. q
如您所见,有些命令只需要一个字符,而另一些则需要一个字符和一个字符串。
到目前为止我所做的是:
//for the character
char init_command;
char command[30];
while(flag) {
read(STDIN_FILENO, &init_command, 1)
switch(init_command)
{
case ('p'):
if (fgets(command, sizeof(command), stdin) == NULL)
{
perror("fgets print");
exit(EXIT_FAILURE);
}
else
sscanf(command, "%s", command);
break;
case ('h'):
printfhelp();
break;
default:
printf("Undefined command\n");
break;
}
}
我省略了r code
和q
命令的部分,因为它是相同的。
所以,这里发生的是,如果我输入这个:
全部
一切都好。但是当我输入这个时:
H
它打印 printhelp() 的输出并立即打印未定义的命令消息。
现在,这必须与 \n 字符有关,但我很难纠正它。