Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Кол-во строк в текстовом файле?


Автор: Alca 19.9.2008, 15:32
Как узнать количество строк в текстовом файле, использую API функции (бех помощи файловых потоков)?
Код

std::string sFileLines(const std::string &csFilePath) {            
    unsigned long int ulLines = 0;   //счётчик строк
    HANDLE            hFile   = INVALID_HANDLE_VALUE;

    //открываем файл для чтения
    hFile = CreateFile(csFilePath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
                    
    //проверяем на успешное открытие
    if (hFile == INVALID_HANDLE_VALUE) {
        return std::string("");
    }

    //читаем данные из файла
    for (;;) {
        DWORD  dwBytesRead = 0;
        char   n           = 0x0A;
        
        //читаем одну запись
        if (!ReadFile(hFile, &n, sizeof(n), &dwBytesRead, (LPOVERLAPPED)NULL)) {
            CloseHandle(hFile);
            return std::string("");
        }
    
        //проверяем на конец файла
        if (dwBytesRead == 0) {    
            //если да, то выходим из цикла
            if (ulLines > 0) {
                ulLines ++;
            }
            break;
        } else {
            if (n == 0x0A) {
                ulLines ++;
            }
        }
    }    

    //закрываем дескриптор файла 
    CloseHandle(hFile);    
    
    char szFileLines[20];    memset(szFileLines, 0, sizeof(szFileLines));
    sprintf_s(szFileLines, "%i", ulLines);        //MessageBox(0, szFileLines, "", MB_OK);

    return std::string(szFileLines);
}

Автор: Dem_max 3.10.2008, 10:39
А именно вот кодом который ты сам и написал.

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