day & night

Программа на С++, Ребята помогите написать програму на С++
Дата обновления: , перейти к новому сообщению
icon13
#1
Maped



Бывалый
*

Группа: Пользователи
Сообщений: 23
Регистрация: 29.10.2007
Пользователь №: 576.372


Респектов: 3
-----X----


Предупреждений:


Поймите бденого студента!
В университете требуют программу написанную на языке С++, но я его просто не знаю.
Программка должна уметь сканировать каталоги с подкаталогами и подсчитать суммарный объем файлов в этих каталогах.
User is offline
Go topGo end
 

Ответов(1 - 2)
19.12.2007 - 22:22
#2
Barbarian



Новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 23.05.2006
Пользователь №: 167.854


Респектов: 0
----------


Предупреждений:


Не совсем оптимально, и если ещё актуально biggrin.gif

Code

#define UNICODE
#include <windows.h>
#include <wchar.h>
#include <stdio.h>

ULONG GetDirSize(WCHAR* path)
{
     ULONG DirSize = 0;
     WIN32_FIND_DATAW FindFileData;
     HANDLE hFind;
     WCHAR buff[MAX_PATH];
     
     ZeroMemory(&buff[0],MAX_PATH);
     lstrcat(&buff[0],path);
     lstrcat(&buff[0],L"\\*.*");
   
     hFind = FindFirstFileExW(&buff[0], FindExInfoStandard, &FindFileData, FindExSearchNameMatch, NULL, 0);
     if (hFind == INVALID_HANDLE_VALUE)
     {
        return 0;
     }
     DirSize += FindFileData.nFileSizeLow;
     while (FindNextFileW(hFind, &FindFileData) != 0)
     {
         if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)  
         {
           if (lstrcmp(FindFileData.cFileName,L"..") != 0)
           {
               ZeroMemory(&buff[0],MAX_PATH);
               lstrcat(&buff[0],path);
               lstrcat(&buff[0],L"\\");
               lstrcat(&buff[0],FindFileData.cFileName);
               DirSize += GetDirSize(&buff[0]);
           }
         }
         else
         {
           DirSize += FindFileData.nFileSizeLow;    
         }
     }
     FindClose(hFind);  
     return DirSize;      
}

int main(int argc, CHAR* argv[])
{
   
   
   WCHAR path[MAX_PATH];
   WCHAR* ppath;
   ppath = &path[1];
   
   ULONG DirSize = 0;
   
   if( argc < 2 )
   {
       printf("Usage: %s [target_file]\n", argv[0]);
       return 0;
   }
   mbstowcs(ppath,argv[1],MAX_PATH);
   wprintf(L"Directory name: %s\nSize: %d",ppath,GetDirSize(ppath));
   
   return 0;      
}
User is offline
Go topGo end
20.12.2007 - 1:15
#3
Barbarian



Новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 23.05.2006
Пользователь №: 167.854


Респектов: 0
----------


Предупреждений:


Пример использования:

X:\Projects\DirSize>dirsize T:\temp
Directory name: T:\temp
Size: 25058874
User is offline
Go topGo end

Topic Options
Сейчас: 14.05.2024 - 1:46
Мобильная версия | Lite версия