Широкие символы и клавиша забой - 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; }
Объяснение кода листинга программы
- Подключаются необходимые заголовочные файлы для работы с широкими символами и клавишей забой.
- Устанавливается локаль на
utf8
. - Открывается файл
/storage/emulated/legacy/ccc
в режиме записиwb
. - В цикле, пока не встретится символ новой строки L'\n', с помощью функции getwchar() считывается очередной символ из стандартного ввода.
- С помощью функции fputwc() символ записывается в файл.
- После окончания цикла, с помощью функций fflush() и fclose() файл закрывается.
- Программа возвращает 0, заканчивая свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д