Проблемы с вводом/выводом

#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();

У меня есть несколько проблем, с которыми я не могу справиться:

  1. Когда я нажимаю Enter, он останавливает цикл и не печатает команду not found сообщение.
  2. Когда я ввожу команду размером более 30 символов, она печатает как команда не найдена, так и длина команды должна быть меньше или равна 30 символамсообщения.
  3. Когда я ввожу команду размера 64, она печатает дважды сообщение длиной 30.

Я полагаю, что он делит ввод на 30 сегментов длины и вводит каждый из них, как мне это преодолеть? Пробовал сбросить stdin, не работает. Я хочу избавиться от остальной части ввода. Как мне преодолеть все эти проблемы?

0
задан unwind 12 June 2012 в 09:43
поделиться