Попробуйте:
#define BUFF_LEN 256
char input[BUFF_LEN];
fgets(input, BUFF_LEN, stdin);
То, что у вас есть, *input
- это указатель на адрес памяти, который не был выделен, поэтому не может использоваться вашей программой. Результат его использования не определен, но обычно приводит к segmentation fault
. Если вы хотите получить к нему доступ в качестве указателя, сначала вам нужно выделить его:
char *input = malloc(BUFF_LEN);
... конечно, проверьте, что в случае сбоя (NULL), затем освободите его () после того, как вы его закончили.
Edit:
По крайней мере, в соответствии с единственной спецификацией UNIX , fgets () гарантирует нулевое завершение буфера. Нет необходимости инициализировать ввод [].
Как уже говорили другие, нет необходимости включать нуль / новые строки при использовании strcmp ().
Я также настоятельно советую вам привыкнуть к использованию strncmp()
сейчас, пока начинаете избегать многих проблем в будущем.