Форум программистов, компьютерный форум CyberForum.ru

Исправить функцию (копирование значений типа TCHAR * ) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему не работает условие в While? http://www.cyberforum.ru/cpp-beginners/thread1212439.html
#include <iostream> using namespace std; void main () { int n=12, NS = 2, answer, answer1, answerFinish, a,b; while (n<=1) { a=n/NS; answer = a; b = a*NS;
C++ Правильно ли я реализовываю сложение чисел в длинной арифметике? class LongLong { private: char * longNumber; int _size; public: LongLong(const char *number = NULL); LongLong(unsigned int); friend LongLong operator +(const LongLong &, const LongLong &); http://www.cyberforum.ru/cpp-beginners/thread1212426.html
Работа с файлами. Как добавить переход на новую строку при записи? C++
Задача такая, дан текстовый файл (с информацией о людях Фамилия Имя Отчество) и надо создать второй файл с записями вида «Фамилия И.О.», например, «Иванов В.С.». Вопрос, моя программа делает то что нужно, а как так сделать чтобы в другой файл записывалось Фамилия И.О. с новой строки? Или не правильно сделал прогарамму? Каверников Михаил Александрович Иванов Павел Андреевич Иванов Виктор...
C++ Перегрузка оператора присваивания
Вот есть такой класс template<typename TT> class Matrix { public: //====================================================================================================== Matrix<TT>(int Row, int Col) { RowCount = Row; ColCount = Col;
C++ Как создать структуру-список, поля которой — ссылка на такую же структуру http://www.cyberforum.ru/cpp-beginners/thread1212403.html
Суть вопроса в том, как создать структуру-список, поля которой - ссылка на сл. элемент(такую же структуру) и ссылка на объект, относящийся к любому из классов. Проще говоря - список из объектов, относящихся к разным классам.
C++ Правильно ли я реализовываю класс длинной арифметики? class LongLong { private: char * longNumber; int _size; public: LongLong(const char *number = NULL); LongLong(unsigned int); friend LongLong operator +(const LongLong &, const LongLong &); подробнее

Показать сообщение отдельно
AlexanderWM
11 / 11 / 2
Регистрация: 16.10.2012
Сообщений: 139

Исправить функцию (копирование значений типа TCHAR * ) - C++

19.06.2014, 18:01. Просмотров 449. Ответов 4
Метки (Все метки)

Ниже представлена функция TCHAR *GetIndex(TCHAR *path), которая принимает путь к текстовому файлу, и возвращает индекс в TCHAR *. Индекс - упорядоченная последовательность пар (порядковый
номер предложения – смещение от начала файла) для каждого предложения в файле.
Вернее - она должна это делать, но не делает. Я уже совсем запутался с функциями, которые работают с TCHAR. Помогите, пожалуйста, исправить. Использовать другие типы - не предлагать, т.к. в этом случае придётся переписывать в 15 раз больше кода. Разные попытки копирования информации - я оставил в коде.

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
bool isEndSentenses(TCHAR * s)
{
    return ((*s == '!') || (*s == '?') || (*s == '.')); //признаки конца предложения
}
 
TCHAR *GetIndex(TCHAR *path)
{
 unsigned int count_sent = 0;
FILE *f;
bool first = false;
 
 TCHAR *outbuf;
 TCHAR *temp;
 TCHAR *out;
 
 
    if((f = _wfopen(path, L"rt")) != 0)
    {
    fseek(f, 0, SEEK_END);
    long int size = ftell(f);
    rewind(f);
    TCHAR* buf = new TCHAR [5000];
    fread(buf,1,size,f);
    fclose(f);
    TCHAR* cur = buf;
 
        while (*cur)
        {
            if (!first) //Это для первого найденного предложения
            {
                if (isupper(*cur))
                {
                count_sent++;
        
                sprintf(temp, "num_sentenses = %i index %i \n", count_sent, cur - buf);
                //_tcscpy_s(dest, _countof(dest), _T("Hello"));
                _tcscpy(outbuf,temp);
                first = true;
                }
            }
 
            if (isEndSentenses(cur) && !isEndSentenses(cur + 1) || !(*(cur + 1)))
            {
            count_sent++;
 
                    swprintf(temp, _T("num_sentenses = %i index %i \n"), count_sent, cur - buf);
        //  wcscat(outbuf,temp);
            }
        cur++;
        }
                    
    }
    
                else
                {
                MessageBox(NULL, L"Cannot open file!", NULL, MB_OK);
                }
    
return outbuf;
 
}
Добавлено через 19 минут
...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru