Чтение кириллицы из консоли - C (СИ)
Формулировка задачи:
Всем добрый вечер. Собственно проблема: есть функция считывающая текст либо из файла, либо из консоли. Причем из файла кириллицу нормально считывает, а из консоли нет.
setlocale(LC_ALL, "Russian") включен. Как можно починить?
void sgets(char *str, int length, FILE *file)
{
fgets(str, length, file);
str[strlen(str)-1] = '\0';
}Решение задачи: «Чтение кириллицы из консоли»
textual
Листинг программы
// Чтение строки
void sgets(char *str, int length, FILE *file)
{
fgets(str, length, file);
str[strlen(str)-1] = '\0';
}
Объяснение кода листинга программы
- В функции
sgetsпроисходит считывание строки из файла или консоли в буфер, представленный переменнойstr. - Длина строки определяется параметром
length. - Функция
fgetsиспользуется для чтения строки в буфер. - Последний символ новой строки в буфере заменяется на символ
0(NUL) для обозначения конца строки. - Буфер
strможет быть динамически выделен с использованием оператораnewили статически выделен в куче.