#define MAX_COMMAND_LEN 32
char command[MAX_COMMAND_LEN];
while (1) {
if (fgets(command, MAX_COMMAND_LEN, stdin) == NULL) {
perror("Error: standard function fgets has failed\n");
break;
}
if (command[strlen(command) -1] != '\n') {
printf("Error: command length must be less than or equal to 30 characters\n");
continue;
}
else {
printf("Error: command not found\n");
}
}
quit();
我有几个问题,这我不能够处理:输入/输出问题
- 当我按下回车,它停止循环,不打印
command not found
消息。 - 当我输入一个大于30个字符的命令时,它将输出
command not found
和command length must be less than or equal to 30 characters
消息。 - 当我输入一个64尺寸的命令时,它打印两次30长度的信息。
我相信它把输入分为30段并输入每一段,我该如何克服它?我试图冲洗stdin
,它不起作用。我想摆脱其余的输入。我如何克服所有这些问题?
不要尝试刷新stdin,它会调用UB。 – SuperSaiyan