Широкие символы и клавиша забой - C (СИ)

Узнай цену своей работы

Формулировка задачи:

добрый день столкнулся с такой проблемой, ввожу строку , кириллицу в консольной тестовой програмке если нажать клавишу забой то в итоге при выводе строки в файл или экран стирается тот символ который необходимо стереть, а также последующий символ который вводится, вместо одного символа два. Перебирал разные функции для работы с широкими символами, результат один. В чем проблема? Функции для работы с широкими символами не умеют правильно обрабатывать клавишу забой? Если не трудно, приведите правильный код , рабочий с широкими символами чтобы клавиша забой стирала только 1, необходимый символ. Спасибо

Решение задачи: «Широкие символы и клавиша забой»

textual
Листинг программы
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
#include <locale.h>
#include <sys/stat.h> 
#include <sys/types.h>
int main ()
{
    setlocale(LC_ALL, "utf8");
    FILE *f;
    wint_t ch;
    f = fopen("/storage/emulated/legacy/ccc", "wb");
 
    while ((ch = getwchar()) != L'\n')
        fputwc (ch, f);
    
    fflush(f);
    fclose (f);
return 0;
}

Объяснение кода листинга программы

  1. Подключаются необходимые заголовочные файлы для работы с широкими символами и клавишей забой.
  2. Устанавливается локаль на utf8.
  3. Открывается файл /storage/emulated/legacy/ccc в режиме записи wb.
  4. В цикле, пока не встретится символ новой строки L'\n', с помощью функции getwchar() считывается очередной символ из стандартного ввода.
  5. С помощью функции fputwc() символ записывается в файл.
  6. После окончания цикла, с помощью функций fflush() и fclose() файл закрывается.
  7. Программа возвращает 0, заканчивая свою работу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы