Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C] Обработка текстового файла


Автор: vladko 31.3.2009, 11:06
Есть функция в dll, которая обрабатывает текстовый файл и записывает результат в другой. Формат файла:

1.3446 11
1.325 876
1.3567 32
1.325 112


Код:

Код

#include <stdio.h>
#include <map>
using namespace std;

typedef map<double, int> Map;

extern "C"
{
void __stdcall proc1(const char* fileName)
{
    FILE* f = fopen(fileName, "r");
    if(!f)
    {
        printf("file not found\n");
        return;
    }
    Map m;
    for(;;)
    {
        double a;
        int b;
        if(fscanf(f, "%lf %d", &a, &b) < 2)
            break;
        pair<Map::iterator, bool> result = m.insert(pair<double, int>(a, b));
        if(!result.second)
            (result.first)->second += b;
    }
    fclose(f);

    char outFileName[264];
    strcpy(outFileName, fileName);
    strcat(outFileName, ".out");

    f = fopen(outFileName, "w");
    for(Map::iterator it = m.begin(); it != m.end(); ++it)
        fprintf(f, "%f %d\n", it->first, it->second);
    fclose(f);
}
}


Формат текстового файла изменился:

20090320 010013;1.3666;1
20090320 010017;1.3667;1
20090320 010017;1.3668;2
20090320 010021;1.3666;1
20090320 010027;1.3667;1
20090320 010057;1.3667;1
Как изменить функцию и добавить вычисления не по всему файлу а по куску ограниченному датой и временем (1 и 2 поля)?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)