Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
crxxvm
8 / 8 / 4
Регистрация: 08.05.2018
Сообщений: 49
1

Запись в массив wchar_t из файла

26.05.2018, 17:09. Просмотров 396. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста разобраться, мне нужно считать файл на русском языке. При чтении русских символов почему то заполняет массив мусором, а английские символы читаются нормально, но когда почему то происходит бесконечный цикл перевыделения памяти.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(void) {
    FILE* f = fopen("Text.txt", "r");
    unsigned int N = 10, delta = 1, i = 0;
    wchar_t* buf = (wchar_t*)malloc(sizeof(wchar_t)*N);
    while ((buf[i] = fgetwc(f)) != EOF) {
        if (++i >= N) {
            N += delta;
            buf = (wchar_t*)realloc(buf, sizeof(wchar_t)*N);
        }
    }
    fclose(f);
    buf[i] = '\0';
    _putws(buf);
    return 0;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2018, 17:09
Ответы с готовыми решениями:

Запись из файла в двумерный массив
Доброго времени суток, у меня стояла задача: Создан файл, в него записать числа от 0 до 255, потом...

Запись строк из файла в массив
Просмотрел аналогичные вопросы - все не то! Задача проста как два пальца. Но что то у меня не...

Запись строки из файла в массив
Здравствуйте. Помогите в простой задачке. Нужно из файла найти строку по части введенного имени и...

Запись в динамический массив с файла
Здравствуйте, выдаёт ошибку при считывания с файла, прошу указать на ошибку в коде....

Запись в массив с файла, исправить код
Во входном файле 2 3 10011111 А результатом выводит это 2 3...

1
easybudda
Модератор
Эксперт CЭксперт С++
10249 / 6139 / 1545
Регистрация: 25.07.2009
Сообщений: 11,686
26.05.2018, 17:54 2
Если Вы не пользуетесь виндовсом, то зачем Вам таких сложностей!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <glib.h>
#include <locale.h>
#include <assert.h>
 
#define FILE_NAME "rustext.txt"
 
int main(void) {
    char * oldloc = setlocale(LC_ALL, "ru_RU.UTF-8");
    assert(oldloc);
    
    gchar * content;
    gsize len;
    GError * err;
    
    if ( ! g_file_get_contents(FILE_NAME, &content, &len, &err) ) {
        g_print("Can't read file: %s\n", (err) ? err->message : "unknown reason");
        return 1;
    }
    
    g_print("%s\n", content);
    
    g_free(content);
    setlocale(LC_ALL, oldloc);
    
    return 0;
}
Код
[andrew@easybook files]$ gcc -Wall -std=c99 read_rus_file.c \
> $(pkg-config --cflags --libs glib-2.0)
[andrew@easybook files]$ ./a.out 
Какой-то текст, написанный писателем русскими буквами для читателей текстов из русских букв.
Читатели читают этот текст и восхищаются.
PS. А хочите функций для работы с utf-8 буквами, таки их тоже есть! https://developer.gnome.org/glib/2.46/glib-Unicode-Manipulation.html
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2018, 17:54

Посимвольное считывание с файла и запись в массив
Всем привет, подскажите, правильно ли я выполняю посимвольное(Нужно считывать, не зная заранее...

Считывание и запись в массив строк из файла
Есть файл-конфигурация, в котором на каждой новой строке стоит сначала число, а потом через пробел...

Чтение из файла строки. Запись в массив
Help! :-| Туплю. Есть файл,в котором написано предложение. Удаляются знаки препинания, получаем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru