Сделать ответ в C, который выглядит хорошо
Я пишу небольшую программу с интерфейсом, похожим на Shell. Мой ui
является:
void cli_ui(void){
bool loop = true ;
char response[CHARSIZE];
while (loop) {
puts("cofre>");
fgets(response, CHARSIZE, stdin);
....
}
}
Моя проблема с этим заключается в том, что ввод читается после приглашения:
cofre>
# input is expected here
Что я хочу это:
cofre> #input is expected here
Как бы вы это сделали?
3 ответа
Проблема в том, что put () записывает строку и заменяет завершающий ноль новой строкой, что приводит к новой строке.
Ответ заключается в использовании fputs (). Несколько удивительно, что fputs () не делает то же самое, что put (), но вместо этого выводит строку без завершающего символа новой строки. Так.
fputs("cofre>", stdout);
Некоторые люди предлагают вам использовать printf (), но это будет ошибкой. Когда вы используете fgets (), вы должны связать его с fputs (). Преимущество заключается в том, что вы явно используете стандартный ввод и вывод, так что вы сможете управлять своим REPL из сценария.
Помните, что в некоторых реализациях fgets () и fputs () могут быть буферизованы, а это не то, что вам нужно. В некоторых случаях вам может понадобиться использовать низкоуровневый ввод-вывод, такой как cputs / cgets (). Это нестандартные.
puts() writes the string s and a trailing newline to stdout.
использование
printf("cofre>");