Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
 Аватар для Razor64
-4 / 15 / 0
Регистрация: 07.07.2012
Сообщений: 91

Чтение текста из .txt файла

18.04.2013, 05:49. Показов 5198. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, вывожу текст в EDIT из .txt файла таким способом:

C++
1
2
3
4
5
6
7
8
DWORD R;
HANDLE FileHandle;
WCHAR duf[1000];
 
FileHandle=CreateFile(L"D:\\слэшер.txt",GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 0);
            ReadFile(FileHandle, duf, 1000, &R, NULL);
            CloseHandle(FileHandle);
            SetDlgItemText(g_hWnd, 4, duf);
Но при выводе в EDIT вместо текста выводится - "쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌 쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌 쳌쳌쳌쳌쳌쳌"

Подскажите решение?

Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2013, 05:49
Ответы с готовыми решениями:

Чтение из файла txt
господа как можно посимвольно прочитать данные из файла txt и занести в массив?

Чтение Txt файла, добавляются символы которых нет
void write_to_file(char* text) { DWORD dwTemp = NULL; HANDLE hFile = CreateFile("C:\\Key.txt", GENERIC_WRITE, 0, NULL, ...

Чтение текста из файла TXT
Добрых день программистам и всем всем всем=) У меня вопрос, следующего характера. Только сначала скажу задание само: Вот дается файл там...

8
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
18.04.2013, 13:07
А файл в какой кодировке: ASCII или Unicode? Это раз.
Затем меня сильно смущает флаг CREATE_NEW, потому что:
Creates a new file, only if it does not already exist.
If the specified file exists, the function fails and the last-error code is set to ERROR_FILE_EXISTS (80).
If the specified file does not exist and is a valid path to a writable location, a new file is created.
Я бы изменил на OPEN_EXISTING. Это два.
И чисто на всякий случай перед чтением данных из файла я бы "залил" буфер нулями, хотя бы так
C++ (Qt)
1
ZeroMemory(duf, sizeof(duf));
0
 Аватар для Razor64
-4 / 15 / 0
Регистрация: 07.07.2012
Сообщений: 91
19.04.2013, 06:11  [ТС]
Исходя из вашего ответа, у меня вопрос - как поменять кодировку?
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
19.04.2013, 06:42
Цитирую:
Для определения формата представления Юникода в начало текстового файла записывается сигнатура — символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. byte order mark, BOM). Это позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также этот способ иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:
UTF-8
EF BB BF
UTF-16BE
FE FF
UTF-16LE
FF FE
UTF-32BE
00 00 FE FF
UTF-32LE
FF FE 00 00
Для проверки можно создать пустой файл, сохранить его как Unicode и открыть его в шестнадцатиричном редакторе. Первые два байта покажут что за кодировка используется.
Для перекодировки текста в си используются две функции: MultiByteToWideChar и WideCharToMultiByte.
0
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
19.04.2013, 10:40
Можно через Notepad++ поменять кодировку , если у тебя есть канешно
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
19.04.2013, 10:57
Цитата Сообщение от BeginerMan Посмотреть сообщение
Можно через Notepad++ поменять кодировку , если у тебя есть канешно
Можно и блокнотом поменять, если уж на то пошло. Дело не в этом, дело в коде программы, в основном
0
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 15
20.04.2013, 00:01
Была проблема с кодировкой, но только компилятор ругался...
Решил следующим путем:
Проект->Свойства(имя_проекта)->Свойства Конфигурации->Общие->Набор знаков-> Поменять на многобайтовую кодировку...
Скорей всего проблема не в этом...но все же
0
 Аватар для Razor64
-4 / 15 / 0
Регистрация: 07.07.2012
Сообщений: 91
24.04.2013, 19:49  [ТС]
Спасибо за советы, но, пробовал менять кодировку через блокнот = 0 эмоций (Используется кодировка Unicode).

p.s.

Так как всё - таки мне вывести текст из .txt файла в "EDIT"?
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
24.04.2013, 20:27
ЭТО В ПЕРВУЮ ОЧЕРЕДЬ!
Проект->Свойства(имя_проекта)->Свойства Конфигурации->Общие->Набор знаков-> Поменять на многобайтовую кодировку...
Далее...
В глобальных:
C++
1
2
3
FILE *frs, *fws;
char OpTar[16][20] = {"","","","","","","","","","","","","","","",""};
char textbuf[500]="";
Сам код:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
int ncop=0;
    int kcop; // длина строки
    int itop[3];
    int kpop=0;
    char cop0[30]={}, cop1[30]={}, cop2[30]={}, cop3[30]={};
    lstrcpy(textbuf,"");
    if( (frs = fopen("settings.txt", "r")) == NULL)
    {
        if( (fws = fopen("settings.txt", "w+")) == NULL)
        {
            MessageBox(hWnd, _T("Файл настроек не создан."), _T("КРИТИЧЕСКАЯ ОШИБКА!"), MB_OK);
            return 0;
        }
        else
        {
            fclose(fws);
            if( (frs = fopen("settings.txt", "r")) == NULL)
            {
                MessageBox(hWnd, _T("Файл настроек не найден."), _T("КРИТИЧЕСКАЯ ОШИБКА!"), MB_OK);
                return 0;
            }
        }
    }
    else
    {
        while(!feof(frs))
        {
            fgets(textbuf, sizeof(textbuf), frs);
            chas++;
        }
        if((chas != 1) || (strlen(textbuf) != 0))
        {
            fseek(frs, 0L,SEEK_SET);
            while(!feof(frs))
            {
                fgets(textbuf, sizeof(textbuf), frs);
                kcop = strlen(textbuf);
                kpop=0;
                for(int i=0;i<kcop;i++)
                {
                    if(textbuf[i] == ';')
                    {
                        kpop++;
                        if (kpop==1)
                            itop[0]=i;
                        if (kpop==2)
                            itop[1]=i;
                        if (kpop==3)
                            itop[2]=i;
                    }
                    if(textbuf[i] == '\n')
                    {
                        textbuf[i] = '\0';
                    }
                }
                for(int d=0;d<itop[0];d++)
                {
                    cop0[d]=textbuf[d];
                }
                for(int d=0;d<itop[1]-itop[0]-1;d++)
                {
                    cop1[d]=textbuf[d+itop[0]+1];
                }
                for(int d=0;d<itop[2]-itop[1]-1;d++)
                {
                    cop2[d]=textbuf[d+itop[1]+1];
                }
                for(int d=0;d<kcop-itop[2]-1;d++)
                {
                    cop3[d]=textbuf[d+itop[2]+1];
                }
                if(ncop == 0)
                {
                    strcpy(OpTar[0], cop0);
                    strcpy(OpTar[1], cop1);
                    strcpy(OpTar[2], cop2);
                    strcpy(OpTar[3], cop3);
                }
                if(ncop == 1)
                {
                    strcpy(OpTar[4], cop0);
                    strcpy(OpTar[5], cop1);
                    strcpy(OpTar[6], cop2);
                    strcpy(OpTar[7], cop3);
                }
                if(ncop == 2)
                {
                    strcpy(OpTar[8], cop0);
                    strcpy(OpTar[9], cop1);
                    strcpy(OpTar[10], cop2);
                    strcpy(OpTar[11], cop3);
                }
                if(ncop == 3)
                {
                    strcpy(OpTar[12], cop0);
                    strcpy(OpTar[13], cop1);
                    strcpy(OpTar[14], cop2);
                    strcpy(OpTar[15], cop3);
                }
                memset( cop0, 0, _countof(cop0) );
                memset( cop1, 0, _countof(cop1) );
                memset( cop2, 0, _countof(cop2) );
                memset( cop3, 0, _countof(cop3) );
                ncop++;
            }
        }
        else
            chas=0;
        fclose(frs);
    }
Теперь можно выводить в боксы и т.п.:
У меня используется данный код в LV...
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int i=0;i<5;i++)
            {
                lv.iItem = i;
                ListView_InsertItem(hListOpTar, &lv);
                ListView_SetItemText(hListOpTar, i, 0, Otype[i]);
                if(i<4)
                {
                    ListView_SetItemText(hListOpTar, i, 1, OpTar[i]);
                    ListView_SetItemText(hListOpTar, i, 2, OpTar[i+4]);
                    ListView_SetItemText(hListOpTar, i, 3, OpTar[i+8]);
                }
            }
По аналогии - SetItemText(hwnd,hEdit);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2013, 20:27
Помогаю со студенческими работами здесь

Чтение текста их txt файла
Здравствуйте. Как сделать создание и чтение текста из txt файла? И в чем разница между print и cout? Заранее огромное спасибо!:)

Чтение текста из txt файла
Здравствуйте уважаемые форумчане. Нужен для лабораторный работы такой код. Программа ищет в txt файла текст заданный в Edit, если такой...

Чтение текста в Юникоде из txt файла в столбец Excel 2010
В общем пытаюсь прочесть, но корректно (без кракозябр) получается только первая строка. Винда английская. Sub ReadTextFile() Dim...

Чтение из файла 'New.txt', запись четных строк в '1.txt', а нечетных в '2.txt'
В общем все работает, но есть &quot;НО&quot;, иначе бы не открывал тему. Содержимое исходного файла: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2...

Как сделать перенос из отдного txt файла текста в другой txt файл в Turbo C?
Надо сделать с потоками. fopen fgets fputs - с этими функциями


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru