Как сделать 'Backspace' программу на C? - PullRequest
0 голосов
/ 14 июля 2011

Я создаю библиотечную функцию для печати и сканирования с использованием ассемблера и c. Теперь, когда я ввожу данные, он печатается, но проблема в том, что когда я нажимаю кнопку возврата, курсор перемещается назад (но ничего не удаляется). Я хочу, чтобы кнопка возврата работала правильно (то есть, чтобы удалить предыдущий символ)

так есть какая-нибудь программа для этого. Пожалуйста, помогите мне.

Ответы [ 3 ]

1 голос
/ 14 июля 2011

Простой, хотя и несколько хакерский способ - просто записывать символы возврата (\b) на консоль.

Например:

#include <stdio.h>

int main()
{
    printf("Testing");
    fflush(stdout);
    printf("\b\b\b");
    fflush(stdout);

    return 0;
}

Но этот тип вещей действительно должен обрабатываться вашим терминальным драйвером. Вы не упоминаете, на какую операционную систему вы ориентируетесь.

0 голосов
/ 14 июля 2011

если вы так делаете, то хотели бы сказать вам одну вещь о консолях Существует 2 типа консолей, одна из которых может распознавать контрольный символ. называется Активная консоль (канонический режим) и та, которая не называется строкой консоли. Очевидно, что если вы используете терминал Unix, то вам будет по умолчанию в качестве консоли активного режима но вы можете установить его в режим строки, выполнив некоторые команды.

0 голосов
/ 14 июля 2011

Вывод backspace, space и backspace:

int c = getchar();
if (c == '\b')
{
    printf("\b \b");
    fflush(stdout);
}

Если нажатие пользователем backspace уже было отражено драйвером терминала, просто сделайте это:

int c = getchar();
if (c == '\b')
{
    printf(" \b");
    fflush(stdout);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...