Прочитать из юникод файла некий текст - C (СИ)
Формулировка задачи:
Все добрый день. Собственно есть цель прочитать из юникод файла некий текст.
Делаю такНо вместо строки получаю первую букву слова и далее кракозябры. Помню что юникод вещь динамическая и что символ может быть немного больше одного байта. И так почему глючит подобная запись? Какие ошибки были сделаны мной? Очень важно указать на все ошибки т.к. действительно хочу освоить все тонкости языка. Язык программирования именно АНСИ Си. Операционка - окна, если что.
Если уже была такая тема - не пинайте сильно. Не нашел поиск по форуму.
Заранее спасибо за ответы!
wchar_t string[10];
FILE *f;
f=fopen("test.txt", "rb");
fgetws(string, 100, f);
printf("%s\n", string);
На правах UP
Решение задачи: «Прочитать из юникод файла некий текст»
textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main()
{
FILE *f;
wchar_t str[100], s[100];
//memset(str, '\0', 100);
if((f=fopen("unicode.txt", "rt, ccs=UTF-8"))==NULL)
{
perror("Error");
}
fgetws(s, sizeof(s), f);
mbstowcs(str, s, 100);
printf("%ls", s);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с юникодом и файлами
- Объявление переменных: указатель на файл, строки str и s типа wchar_t, а также строка s типа char
- Проверка на открытие файла
unicode.txtв режиме чтения и с указанием кодировки UTF-8 - Проверка на успешное чтение из файла в строку s с помощью функции fgetws
- Преобразование строки s из типа wchar_t в тип char с использованием функции mbstowcs
- Вывод строки s на экран с помощью функции printf
- Завершение программы с возвратом 0, что означает успешное выполнение