была такая задача: Составить программу, которая для заданного начального каталогов файловой системы вычисляет общее количество строк в файлах с расширениями "pas" и "cpp" которые находятся внутри этого каталога и его подкаталогов.
вот ответ - это правильно??
#include<stdio.h>
#include<stdlib.h>
#include<fstream>
#include<windows.h>
int calculate(char *name)
{
std::ifstream in;
in.open(name);
int i=0;
char buffer[1024];
while(!in.eof())
{
i++;
in.getline(buffer, 1024);
if(in.eof()) break;
}
in.close();
return i;
}
int main()
{
WIN32_FIND_DATA FindFileData;
HANDLE fnext;
char dir[256];
char path[256];
char name[256];
// gets(dir);
GetCurrentDirectory(256, dir);
strcpy(path,dir);
strcat(path, "\\*.cpp");
int result=0;
if(fnext=FindFirstFile(path,&FindFileData))
{
if (fnext != INVALID_HANDLE_VALUE)
{
strcpy(name,dir);
strcat(name,"\\");
strcat(name,FindFileData.cFileName);
result+=calculate(name);
while(FindNextFile(fnext,&FindFileData))
{
strcpy(name,dir);
strcat(name,"\\");
strcat(name,FindFileData.cFileName);
result+=calculate(name);
}
}
}
FindClose(fnext);
strcpy(path,dir);
strcat(path, "\\*.pas");
WIN32_FIND_DATA FindFileData2;
if(fnext=FindFirstFile(path,&FindFileData2))
{
if (fnext != INVALID_HANDLE_VALUE)
{
strcpy(name,dir);
strcat(name,"\\");
strcat(name,FindFileData.cFileName);
result+=calculate(name);
while(FindNextFile(fnext,&FindFileData2))
{
strcpy(name,dir);
strcat(name,"\\");
strcat(name,FindFileData.cFileName);
result+=calculate(name);
}
}
}
FindClose(fnext);
printf("Result is %d", result);
gets(path);
return 0;
}
Предупреждение: |
А вы этот листинг компилировать самостоятельно пробовали? Если бы попробовали - сразу же узнали бы, верно он написан или нет. Ваш модератор. |