Witam, to znowu ja
Sporo sie nie odzywałem na forum wiec pora cos napisac
Pisze ostatnio program zaliczeniowy na programowanie w języku C i napotkałem pewien problem. Musze napisać algorytm przeszukujący foldery rekurencyjnie tj. podam ścieżkę F:\\ to znajdzie mi wszystkie pliki znajdujące sie na dysku F. Napisałem go dzisiaj w nocy, wyszukuje ładnie pięknie wszystkie pliki (zauwazylem ze jak jest >10000k plikow w folderze ktory przeszukujemy to wywala blad), ale na sam koniec juz gdy konczy sie rekurencja i dochodzi o instrukscji system("pause") wywala bład UNHANDLED EXCEPTION a dokladnie "First-chance exception in findfirst.exe: 0xC0000005: Access Violation."
Wie ktos czym do jest spowodowane?
Kod:
// wywalilem bo był zwalnony
EDIT:
Znalazłem jeden blad...dotyczy on zlego sprawdzania czy plik jest plikiem. Mam tu na mysli ze plik niekoniecznie musi miec gdzies kropke (znalazlem u siebie na dysku pliki bez rozszerzen). ALe z kolei to tylko jeden z bledow. Nadal pozostaje blad przy wypisywaniu plikow. Gdy wypisze wszystkie i wyswietli prosbe o wcisniecie klawisza prgram sie sypie mimo ze wszystko ladnie wypisalo.
EDIT 2
Działa, juz pomoc nie potrzebna
Jakby ktoś chciał
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <string.h>
#include <windows.h>
void szukaj(char path[]);
int main(void)
{
char sciezka[300];
gets(sciezka);
szukaj(sciezka);
system("pause");
return 0;
}
void szukaj(char path[])
{
HANDLE x;
int i,n,m;
WIN32_FIND_DATA c_file;
x = FindFirstFile(path, &c_file);
do
{
if (c_file.cFileName[0]=='.')
continue;
if (c_file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
strcpy(path+strlen(path)-3, c_file.cFileName);
strcat(path,"\\*.*");
szukaj(path);
for(n=strlen(path); n>=0; n--)
{
if (path[n]=='\\')
break;
}
for(m=n-1;m>=0;m--)
{
if (path[m]=='\\')
{
strcpy(path+m,"\\*.*");
break;
}
}
}
else
{
puts(c_file.cFileName);
}
}
while (FindNextFile(x, &c_file));
FindClose(x);
}