Προς το περιεχόμενο

C++ : files into a folder


back.and.forth

Προτεινόμενες αναρτήσεις

Δημοσ.

geia sas 8a i8ela na rotiso :

 

ston kodika mou dino san orismata merika arxeia

apo to ka8e arxeio pairno to file descriptor tou

k ta apo8ikeuo se vector< char * >

pou sti sunexeia xrisimopoio to parapano vector, ta kano parsing k.lp.

 

alla 8a i8ela na kano pio mikri tin entoli ektelesis tou programmatos :

diladi, na min prosdiorizo ta 3,4,5,.. osa arxeia prokeitai ka8e fora

alla na dino mono to path kai na vriskei mesa sto dedomeno fakelo

to pli8os ton arxeion k na pairnei to file descriptor tou ka8e arxeiou

k na tous apo8ikeuo sto parapano vector k.lp.

 

mipos 3erei kaneis pos mporo na to kano auto ?

Δημοσ.

Δεν υπάρχει ANSI τρόπος γι αυτή τη δουλειά. Ή από το API του OS σου ή με μη-ANSI που μπορεί να έχει ο compiler που χρησιμοποιείς. Για windows πρέπει να χρησιμοποιήσεις τις FindFirstFile και FindNextFile.

Δημοσ.

Δεν γνωρίζω με ποιον C++ Compiler δουλεύεις όμως στην CodeGear Turbo C++ μπορείς να περάσεις σχεδόν αυτόματα τα αρχεία ενός καταλόγου με την βοήθεια wildcards ως παραμέτρων εκκίνησης της εφαρμογής όπως, πχ. myprog *.exe ώστε οι argc και argv να περιλαμβάνουν για παράδειγμα όλα τα “exe” αρχεία του καταλόγου κτλ.

 

Αυτό για να το πετύχεις σε CodeGear Turbo C++ πρέπει να κάνεις link το πρόγραμμα σου με την βιβλιοθήκη wildargs.obj (πχ. “bcc32 myprog.c wildargs.obj”).

 

Μπορεί στο δικό σου περιβάλλον αυτή η δυνατότητα να είναι ενσωματωμένη στην C RTL, μπορεί όπως στην περίπτωση της CodeGear C++ όχι –δες για wildcard support στο argc/argv.

 

Άλλη απλούστερη λύση από αυτήν δεν γνωρίζω.. –μετά πάμε σε File System API..

 

Ο τρόπος που δουλεύει είναι ο παρακάτω:

 

>
#include <stdio.h>

int main(int argc,char *argv[])
{
 int nArgcIdx;

 for(nArgcIdx=1;nArgcIdx<argc;nArgcIdx++)
  printf(" %d = %s\n",nArgcIdx,argv[nArgcIdx]);

 return 1;
}

 

Όπως καταλαβαίνεις το wildargs.obj απλά φορτώνει, με βάση τα wildcards που ορίζεις, στο argv όλα τα αρχεία που ταιριάζουν μαζί τους και στο argc τον συνολικό αριθμό τους.

 

Καλή συνέχεια..

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...