Я пишу какую-то небольшую программу на C - некоторые входят в систему, выходят из системы, создают учетную запись, отправляют сообщение-сообщение-другому-учетной записи - на которой я могу опираться, изменять, обновлять и совершенствовать, чтобы усовершенствовать свои навыки в C.
Я пытаюсь понять, как реализовать часть опции «составить сообщение». После того, как вас попросят указать получателя, тему и текст сообщения, я хочу вернуться и отредактировать их - без необходимости повторного ввода всего текста. Поэтому, если бы я выбрал опцию «редактировать сообщение», она выписала бы то, что у меня было, и позволила бы мне вернуться и что-то изменить.
Я сделал что-то вроде этого в x86 сборке , или начал делать что-то подобное, так что я в принципе понимаю, как это будет реализовано на уровне машины, но я не знаю как реализовать это на C. Как мне это сделать?
Такие вещи сбивают меня с толку в C:
- Хороший способ обработки потенциально длинного ввода
- Как выписать текст и позволить пользователю редактировать его, не выходя за пределы определенной точки
- Как управлять положением курсора
Кроме того, если это было сделано ранее, и существует библиотека функций для подобных вещей (даже стандартная библиотека, о которой я не знаю), пожалуйста, обратите внимание, что я действительно хочу свернуть свою собственную с целью обучения.
Я полагаю, что у меня в голове есть способ прочитать тело сообщения по одному символу за раз, чтобы я мог учесть возврат каретки и создать многострочное сообщение. Но я не уверен, как бы я прошел через это. Я думаю, это было бы очень сложно сделать из командной строки (?).
Если не невозможно, переместить курсор назад и стереть символы, которые уже находятся вне буфера ввода ... Придется ли мне каждый раз «перерисовывать экран»? Например, я могу просто взять под контроль всю консоль и просто читать и записывать нажатия клавиш на определенных позициях? Или это слишком близко к машине? Я вроде как делал это с ассемблером, но в нем использовались 16-битные прерывания, которые мне не разрешено использовать в C ... Вот что я написал в ассемблере:
(изображение, которое было здесь раньше, исчезло)
, где программа преобразует значение байта в двухсимвольные коды, представляющие этот байт, затем переходит к правому столбцу и записывает исходный байт (который отображается как символ), затем возвращается назад и записывает еще два шестнадцатеричных числа , в следующем слоте ... И так далее, слева направо, сверху вниз ... Это было легко, но у меня есть нет идея, как мне реализовать это в C. Все, что я могу сделать, это INT 21 стиль ввода и вывода, запись строк в консоль, которая прокручивает окно вверх и т. Д.