DaN(DR), так анализировать надо
(в студии я работаю: )запускаем без точек останова F5 на отладку, ждём косяка.
остановились на строке
*(char *)pointer = (char)ch;
в файле input.c
у pointer явно косячное значение - 0xffffffcc ,
смотрим, откуда взят pointer - выше:
if (!suppress) {
arglistsave = arglist;
pointer = va_arg(arglist,void *);
}
ага, значит было передано в параметрах. Смотрим там - ага, был передан не адрес, а значение ch , причём она у тебя не инициализирована , в дебаге содержит 0xcc - отсюда и 0xffffffcc (знаковый бит размазан в FF)
-----------
ещё alt+F7 , когда ,в режиме остановки в дебаге - показать стек вызовов