СИ: Ввод строки в консоли с редактированием значения по умолчанию
Вопрос по чистому СИ. Нужно ввести с клавиатуры (в консоли) строку символов. При этом программа сначала выводит некое начальное значение этой строки, и затем пользователь может ее изменить по собственному усмотрению. Например, программа выводит в консоль приглашение: "Введите ваш город: " и далее сразу выводит некий город по умолчанию (например, "Москва") Далее пользователь может либо принять это значение по умолчанию (нажав enter), либо изменить его на другой город. И программа, соответственно, должна корректно считать все, что будет введено. Какие есть варианты как это можно реализовать в консоли?
Ответы (2 шт):
Классический вариант для диалогового консольного интерфейса — предложить вариант по умолчанию в квадратных скобках, а потом проверить, ввёл ли пользователь что-то:
#define BUF_SZ 80
//...
const char *default_city = "Москва";
char city[BUF_SZ];
printf("Введите ваш город [%s]:", default_city);
fgets(city, BUF_SZ, stdin);
if (city[0] == '\n' || city[0] == 0 ) {
strcpy(city, default_city);
}
Самое простое решение я в итоге придумал такое: Эмулировать нажатие нужных клавиш в отдельном потоке, во время ожидания ввода пользователя. Получается именно то, что было нужно (т.е. "значение по умолчанию" с возможностью его изменять). Всем спасибо в любом случае.