Я собираюсь переместить ответ из комментариев к ответу, но как вики-сообщество.Я не хотел бы писать какой-то «псевдо-окончательный» ответ, который действительно был ударом в темноте, как это.
На основании симптома вывода, не появляющегося на терминале, я предложил вам добавитьfflush(stdout)
до вызова getchar()
.fflush()
- это стандартная библиотечная функция C, которая «сбрасывает» ожидающий вывод или ввод.
Я только что догадался, что ваш вывод printf()
отправляется в буфер, и что вызов fflush(stdout)
приведет к тому, что этот буфербыть отправленным на терминал, чтобы решить ваш симптом.
Вы могли бы использовать следующую макро- и переменную функцию, чтобы разрешить fflush
после каждого printf
:
/*
* If the environment supplies vfprintf():
*/
#define printf my_printf
int my_printf(const char * fmt, ...)
{
int ret_val;
va_list var_args;
va_start(var_args, fmt);
ret_val = vfprintf(stdout, fmt, var_args);
va_end(var_args);
fflush(stdout);
return ret_val;
}
в противном случаевозможно:
/* If the environment lacks vfprintf() */
#define my_printf(args) ((void)printf args, (void)fflush(stdout))
/*
* Usage:
*
* my_printf(("Format %s\r\n", "string"));
*
*/