[ istrazivac @ 23.07.2001. 18:56 ] @
Koja brise sadrzaj odredjenog direktorijuma,ili jos bolje koja brise u odredjenom folderu samo odredjeni tip fajlova,znaci ako imam c:primer,treba mi funkcija koja ce izbrisati sve fajlove u direktorijumu primer kojih recimo ima 1000 komada ili koja ce izbrisati sve *.txt fajlove odjednom.Ako neko zna hvala unapred
[ Vojislav Milunovic @ 23.07.2001. 23:08 ] @
Takva funkcija ne postoji sto ne znaci da se ne moze napraviti.
Za brisanje filvoa koristi unlink() a za liastnje dira koristi opendir(),readdir(),closedir().
Na windowsu mislim da su u pitanju funkcije findfile i findnext ili tako nesto.Za citanje i listanje dira korisit ovaj kod :
Code:

#include<sys/types.h>
#include<dirent.h>
#include<unistd.h>

int main(){
 DIR *dir;
 struct dirent *file;
 dir = opendir("/root");
 while ( ( file = readdir(dir)) != NULL )
   printf("%sn",file->d_name);

closedir(dir);

[ istrazivac @ 24.07.2001. 04:01 ] @
Pozdrav predator,hvala sto si se jos jednom nasao da mi priteknes u pomoc,ali ovaj put mi ova stvar ne vrsi posao,ali u svakom slucaju hvala ti puno!!! Posto sada radim nestu MS VC++ i on uopste nema ove *h fajlove,pa sam ja pokusavao da ih prenesem iz linuxa,ali nesto nije ok,a da bude jos gore problem je dobio drugu dimenziju i sada mi treba funkcija koja brise ceo direktorijum iako u njemu ima fajlova,ja sam uvek koristio funkciju _rmdir za to,ali ona brise samo prazne direktorijume,pa ako to znas puno ti hvala.I za ovo prethodno jos jednem hvala sto si bio brz i zainteresovan da pomognes
[ Vojislav Milunovic @ 24.07.2001. 12:36 ] @
Pa moras da napravis program koji ce da izlista sve filove i sve njih da obrise tj. da isparzni sve podirektorijume i njih da brise,pa onda glavni direktorijum.Ne znam za Windows...mislim trebalo bi da pogledas u MSDN za funkcije findfile i findnext (tako nesto) pa onda da uradis svoj program koji ce da ide krzo poddirektorijume i sve filove da cisti ;o)
[ kajla @ 24.07.2001. 12:42 ] @
pa to mozes jednostavno da uradis sa system():

system("rd ime_direktorijuma");
mislim da ti je ovo najjednostavnije.

(ako koces da obrises sve *.txt fajlove u trenutno direktorijumu
system("del *.txt"); )

poz.
[ tOwk @ 26.07.2001. 02:13 ] @
ANSI/ISO C 99 definiše jednu funkciju koja može koristiti u ovom slučaju:
int remove(char *ime) u stdio.h

Ona uklanja fajl sa datim imenom, pa je sve što treba uraditi izlistati sve fajlove u određenom direktorijumu i brisati jedan po jedan. Zbog same kompleksnosti brisanja celog direktorijuma, takva funkcija ne postoji kao jedinstvena ni na jednom sistemu, ali se ovako implementira.

Toliko.
[ tOwk @ 26.07.2001. 02:19 ] @
Code:

HANDLE FindFirstFile(

    LPCTSTR lpFileName,    // pointer to name of file to search for  
    LPWIN32_FIND_DATA lpFindFileData     // pointer to returned information 
   );    
 
HANDLE FindFirstFile(

    LPCTSTR lpFileName,    // pointer to name of file to search for  
    LPWIN32_FIND_DATA lpFindFileData     // pointer to returned information 
   );    
 
HANDLE FindFirstFile(

    LPCTSTR lpFileName,    // pointer to name of file to search for  
    LPWIN32_FIND_DATA lpFindFileData     // pointer to returned information 
   );    
 
typedef struct _WIN32_FIND_DATA { // wfd  
    DWORD dwFileAttributes; 
    FILETIME ftCreationTime; 
    FILETIME ftLastAccessTime; 
    FILETIME ftLastWriteTime; 
    DWORD    nFileSizeHigh; 
    DWORD    nFileSizeLow; 
    DWORD    dwReserved0; 
    DWORD    dwReserved1; 
    TCHAR    cFileName[ MAX_PATH ]; 
    TCHAR    cAlternateFileName[ 14 ]; 
} WIN32_FIND_DATA; 
 


Iz Win32 API reference. Pretpostavljam da treba koristiti windows.h. Toliko.
[ kajla @ 26.07.2001. 11:33 ] @
Citat:
tOwk je napisao:
ANSI/ISO C 99 definiše jednu funkciju koja može koristiti u ovom slučaju:
int remove(char *ime) u stdio.h

Ona uklanja fajl sa datim imenom, pa je sve što treba uraditi izlistati sve fajlove u određenom direktorijumu i brisati jedan po jedan. Zbog same kompleksnosti brisanja celog direktorijuma, takva funkcija ne postoji kao jedinstvena ni na jednom sistemu, ali se ovako implementira.

Toliko.


Pa remove() ti je makro koji samo predaje argumente funkciji unlink()
valjda je definisan ovako:

#define remove(x) unlink(x)

poz.
[ tOwk @ 26.07.2001. 23:51 ] @
Greška. remove() nije makro, ali je moguće da je na nekim sistemima ili kompajlerima tako implementiran.

ANSI C ne definiše unlink() funkciju, što znači da je ona vezana za sistem na kojem se radi.

Citat:

7.9.14.1 The
Code:
remove
function



Synopsis
Code:

 #include <stdio.h> int remove(const char *filename);



Description

The
Code:
remove
function causes the file whose name is the string pointed to by
Code:
filename
to be no longer accessible by that name. A subsequent attempt to open that file using that name will fail, unless it is created anew. If the file is open, the behaviour of
Code:
remove
function is implementation-defined.


Returns

The
Code:
remove
function returns zero if the operation succeeds, nonzero if it fails.


Tako kaže ISO standard za C99 (tačnije draft verzija iz avgusta 1998.).

Toliko.b
[ Vojislav Milunovic @ 27.07.2001. 12:18 ] @
DAj neki URL de da vidim te standarde...bas me zanima kako to sve izgleda ;o)
[ kajla @ 28.07.2001. 12:44 ] @
Pazi ovako ja imam Turbo C Reference Guide gde kaze sledece:

Function: Removes a file

Syntax: #include <stdio.h>
int remove(const char *filename)

Prototype in: stdio.h

Remarks: remove deletes the file specified by filename. It is a macro that simply translates its call to call unlink

Return value: ....

Portability: remove is avaible on UNIX systems and is compatible with ANSI C.

See also: unlink

pogledao sam stdio.h (Turbo C-ov) i vidim:

#define remove(path) unlink(path)

E sad, mozda je ovo samo u Turbo C-u.

poz.
[ tOwk @ 29.07.2001. 03:52 ] @
To sam iskopao jos pre na ISO sajtu, nije bas lako naci, a nemam tacni URL, pa ako treba imam PostScript na CD-u sa dokumentacijom, i istampanu verziju kao booklet (Ima oko 600 strana, pa da stane na 150 listova).

Ako treba, uploadovacu negde, ili da saljem na mail.

Toliko.
[ Vojislav Milunovic @ 29.07.2001. 11:34 ] @
Uploaduj negde ;o)
[ tOwk @ 30.07.2001. 02:12 ] @
Postovacu ovo kao i novu temu, pa svako koga interesuje:

ISO C99 commitee draft, august 3, 1998 na

http://www.towk.net/dev/c/n843.ps.gz

Toliko.