СИ: Ввод строки в консоли с редактированием значения по умолчанию

Вопрос по чистому СИ. Нужно ввести с клавиатуры (в консоли) строку символов. При этом программа сначала выводит некое начальное значение этой строки, и затем пользователь может ее изменить по собственному усмотрению. Например, программа выводит в консоль приглашение: "Введите ваш город: " и далее сразу выводит некий город по умолчанию (например, "Москва") Далее пользователь может либо принять это значение по умолчанию (нажав enter), либо изменить его на другой город. И программа, соответственно, должна корректно считать все, что будет введено. Какие есть варианты как это можно реализовать в консоли?


Ответы (2 шт):

Автор решения: Fat-Zer

Классический вариант для диалогового консольного интерфейса — предложить вариант по умолчанию в квадратных скобках, а потом проверить, ввёл ли пользователь что-то:

#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);
}
→ Ссылка
Автор решения: dita137

Самое простое решение я в итоге придумал такое: Эмулировать нажатие нужных клавиш в отдельном потоке, во время ожидания ввода пользователя. Получается именно то, что было нужно (т.е. "значение по умолчанию" с возможностью его изменять). Всем спасибо в любом случае.

→ Ссылка