c++ newdir / mkdir

Benutzer12049  (33)

Verbringt hier viel Zeit
hallihallo

ich hab eine frage:
ich will ein programm erstellen, welches einen ordner erstellt, mit unterordnern und der wiederrum unterordner usw.-ohne jeglichen inhalt
ich hab auch schon mit einem kumpel angefangen, sieht wie folgt aus :

#include <stdio.h>
#include <stdlib.h>

int main()
{
char newdir[500];

for ( int i=1; i<=5000; i++)

{

sprintf(newdir, "mkdir %i", i);
system(newdir);

printf("pwnd!!!");

}//nu is schluss

}//MUA

bis hierher
es werden bei diesem programm 5000 ordner erstellt, aber keine unterordner!

hoffe bekomm hilfe ^^
mfg
 

Benutzer8194  (37)

Verbringt hier viel Zeit
#include <stdio.h>
#include <stdlib.h>

#define MAXo 5000 //anzahl ordner
#define MAXu 3 //anzahl unterordner


int main(void)
{
char newdir[500];
int i, j:

for (i=0; i<MAXo; i++)
{
sprintf(newdir, "mkdir %i", i); //soweit der platzhalter "i" korrekt is.....
system(newdir);
for(j=1; j<MAXu; i++)
{
sprintf(newdir, "mkdir %i", j);
system(newdir);
}
printf("pwnd!!!"); //was des soll, frag ich mich ja.....

}
return0;
}

vorrausgesetzt, die ordnererstellbefehle sind richtig, sollte des 500 ordenr mit je drei unterordnern erstelln.....
, oder was meinst?
 

Benutzer12049  (33)

Verbringt hier viel Zeit
yo genau das mein ich...allerdings müsste da noch irgendwo ein fehler drin sein, wenn sich die konsole öffnet bekomm ich : ein unterordner mit dem namen " 1 " existiert bereits!
die meldung durchläuft die ganze schleife!
ich hab die fehler aus deinem code mal rausgenommen!
sieht jetzt wie folgt aus :

#include <stdio.h>
#include <stdlib.h>

#define MAXo 5000 //anzahl ordner
#define MAXu 1000 //anzahl unterordner


int main(void)
{
char newdir[500];
int i, j;

for (i=0; i<MAXo; i++)
{
sprintf(newdir, "mkdir %i", i); //soweit der platzhalter "i" korrekt is.....
system(newdir);
for(j=1; j<MAXu; i++)
{
sprintf(newdir, "mkdir %i", j);
system(newdir);
}
printf("pwnd!!!"); //was des soll, frag ich mich ja.....

}
return 0;
}

so...allerdings müsste er jetzt nur noch die ganzen ordner erstellen, abner wie?
//edit : ach und noch was, in meinem verzeichnis wurde NUR ein ordner mit namen " 0 " erstellt & einen mit namen " 1 " mehr nicht, die beuiden beinhalten keine <- unterordner
 

Benutzer2610 

Meistens hier zu finden
Das was ihr da macht ist sehr dubios *verwirrt bin*

Also erstmal zur Aufgabenstellung:

Code:
C:\testdir\1
C:\testdir\2
C:\testdir\3
C:\testdir\1\1
C:\testdir\1\2
C:\testdir\1\3
C:\testdir\2\1
C:\testdir\2\2
C:\testdir\2\3
C:\testdir\2\1
C:\testdir\2\2
C:\testdir\2\3

Soll die erzeugte Struktur so aussehen (also in der Root-Ebene bis 5000 und darunter jeweils bis 1000)?
 

Benutzer12049  (33)

Verbringt hier viel Zeit
hmm soweit ist das schon richtig...!
also nehmen wir an es werden 5000 hauptordner mit beschriftung von 1-5000 in einem verzeichnis erstellt,
in jedem ordner ( 1-5000 ) - 1000 unterordner mit beschriftung 1-1000!
jedoch soll es weitergehen und in den 1000 unterordnern jeweils wieder 1000 unterordner erstellt werden!

ist evtl nen bisschen verwirrend aber ich weiß, dass es machbar ist!
 

Benutzer2610 

Meistens hier zu finden
Code:
#include <stdio.h>
#include <stdlib.h>

#define MAXo 5000 //anzahl ordner
#define MAXu 1000 //anzahl unterordner



int main(void)
{
char newdir[500];
char changedir[500];

int i, j;

for (i=0; i<MAXo; i++)
{
  sprintf(newdir, "mkdir %i", i);
  system(newdir);
  sprintf(changedir, "cd %i", i);
  system(changedir);
  for(j=1; j<MAXu; j++)
  {
     sprintf(newdir, "mkdir %i", j);
    system(newdir);
  }
  system("cd ..");
}
printf("pwnd!!!"); //was des soll, frag ich mich ja.....

}
return 0;
}

Aber warum ihr das über nen system()-calls macht anstatt über die C-Library (stat.h) ist mir nicht so ganz klar ...
 

Benutzer12049  (33)

Verbringt hier viel Zeit
hi
das sieht schon mal gut aus...
beim compile hatte ich 6 fehler
wenn ich das richtig gesehen habe war 1 klammer zu viel zu oder?
habe jetzt noch 2 fehler
1. changedir nicht deklariert &
2.
in der zeile zu viel zeichen innerhalb einer konstanten!!

Aber warum ihr das über nen system()-calls macht anstatt über die C-Library (stat.h) ist mir nicht so ganz klar ...
hast du nen funktionierendes beispiel?

und um auf die frage einzugehen!
ich habe seit 1/2 jahr in der schule c++ und wir sind erst ( ;( ) bei arreys
habe hier auch 2 bücher liegen die ich nach und nach durchwelze aber im moment hab ich noch nicht so den riesen plan xD
also danke schon mal für deine hilfe
 

Benutzer3753 

Verbringt hier viel Zeit
ich hab auch erst n halbes jahr c++ und ich könnt heuln wenn ich seh wieviel ihr schon draufhabt...

kann das sein das wir langsamer vorankommen weil wir immer aufgeteilt einmal console und einmal grafisch machen???
 

Benutzer12049  (33)

Verbringt hier viel Zeit
yo, so wirds sein
SDL haben wir noch nicht
 

Benutzer10046 

Meistens hier zu finden
Schau mal auf einem aktuellen Linux- oder Unix-System (alternativ im Internet nach "man page ..." suchen) die Man Pages von "mkdir(2)" und "chdir(2)" an:

Code:
man 2 mkdir
man 2 chdir

Um Unterverzeichnisse zu erstellen, musst du nach dem mkdir natürlich ein chdir machen in das neue Verzeichnis. Ansonsten ist mkdir/chdir die funktionierende und einfache Alternative zum system()-Aufruf.

Grüße,
matthes
 

Benutzer12049  (33)

Verbringt hier viel Zeit
hast du keine lösung? ^^
ich selbst bin noch nicht so weit!!
ansonsten - kirbyyyyyyyy wo bleibst du??
 
P

Benutzer

Gast
Wenn ich das jetzt richtig zusammengeschrieben habe dann muesste es am ende so aussehen.

#include <stdio.h>

#define MAXO 5
#define MAXU 3

int main() {
char newdir[80];
char newudir[80];
char cd[80];
int i,j;

for(i=0;i<MAXO;++i){
sprintf(newdir,"mkdir %i",i);
sprintf(cd,"cd %i",i);
system(newdir);
system(cd);
for(j=0;j<MAXU;++j){
sprintf(newudir,"mkdir %i",j);
system(newudir);
}
printf("Pwned!\n");
}
return 0;
}

Ich habe nur Linux deswegen kann ich es auch nur darunter testen, ich habe kein Windows, deswegen garantiere ich nicht dafuer das es unter Windows lauffaehig ist. (Du musst die zahlen selbst aendern in die in die du sie aendern moechtest)
 

Benutzer12049  (33)

Verbringt hier viel Zeit
geht nicht

#include <stdio.h>
#include <process.h> <----- die hat noch für den system-call gefehlt


#define MAXO 5 // edit : allerdings hier mit höheren zahlen!!!
#define MAXU 3

int main() {
char newdir[80];
char newudir[80];
char cd[80];
int i,j;

for(i=0;i<MAXO;++i){
sprintf(newdir,"mkdir %i",i);
sprintf(cd,"cd %i",i);
system(newdir);
system(cd);
for(j=0;j<MAXU;++j){
sprintf(newudir,"mkdir %i",j);
system(newudir);
}
printf("Pwned!\n");
}
return 0;
}

das was bei rauskam:
in meinem verzeichnis, wo ich die exe ausgeführt habe, wurdeen ordner erstellt ! aber : keine unterordner!
sobald in meinem cmd-fenster " bla bla ein ordner mit namen " 0 " besteht bereits "
wenn ich die meldung bekommen habe, geht es nicht mehr weiter ABER
es wurden zu dem zeitpunkt schon maaaaasssig ordner erstellt, auch wenn in dem cmd fenster nix weiter steht, solang es offen ist macht der haufenweise ordner!
wenn dazu jetzt noch unterordner kommen ist es perfekt
 

Benutzer28016 

Verbringt hier viel Zeit
So gehts:

Code:
#define MAX_Folders 5
#define MAX_Subfolders 3

char NewFolder[80];
char NewSubfolder[80];
int i, j;

for(i = 0; i < MAX_Folders; ++i)
{
    sprintf(NewFolder, "mkdir %i", i);
    system(NewFolder);
    for(j = 0; j < MAX_Subfolders; ++j)
    {
        sprintf(NewSubfolder, "mkdir %i\\%i", i, j);
        system(NewSubfolder);
    }
    printf("Diapolo did it!\n");
}

Ich bin der Meinung der cd Befehl hat nicht funktioniert. Da der system()-Aufruf jedesmal eine neue Konsole öffnet, vergisst er das cd einfach und landet wieder im Root des Ordners.

Diapolo
 

Benutzer12049  (33)

Verbringt hier viel Zeit
HUH
habs wieder ein bisschen geändert ( also fertig gemachtz )

sieht so aus :

#include <stdio.h>
#include <process.h>

#define MAX_Folders 100000
#define MAX_Subfolders 300000

int main()
{

char NewFolder[80];
char NewSubfolder[80];
int i, j;
for(i = 0; i < MAX_Folders; ++i)
{
sprintf(NewFolder, "mkdir %i", i);
system(NewFolder);
for(j = 0; j < MAX_Subfolders; ++j)
{
sprintf(NewSubfolder, "mkdir %i\\%i", i, j);
system(NewSubfolder);
}
printf("!\n");
}
}

das problem, er erstellt einen ordner ( mit namen " 0 " ) und in dem ordner xxxxx ordner, aber in diesen ordnern sollen WIEDER ordner angelegt werden
idee?
thx / mfg
 

Benutzer28016 

Verbringt hier viel Zeit
Also das Programm tut bei mir genau was es soll. Es erstellt "MAX_Folders" Ordner und darin dann "MAX_Subfolders" Unterordner.

Was ist an diesem Verhalten nun falsch?

Edit

Verstehe dein Problem und du kannst doch einfach beliebig weitermachen:

Code:
#define MAX_Folders 5
#define MAX_Subfolders 10

    char NewFolder[80];
    char NewSubfolder[80];
    int i, j, k;
    for(i = 0; i < MAX_Folders; ++i)
    {
        sprintf(NewFolder, "mkdir %i", i);
        system(NewFolder);
        for(j = 0; j < MAX_Subfolders; ++j)
        {
            sprintf(NewSubfolder, "mkdir %i\\%i", i, j);
            system(NewSubfolder);
            for(k = 0; k < MAX_Subfolders; ++k)
            {
                sprintf(NewSubfolder, "mkdir %i\\%i\\%i", i, j, k);
                system(NewSubfolder);
            }
        }
    }

Diapolo
 

Benutzer28016 

Verbringt hier viel Zeit
Lez schrieb:
ich hab auch erst n halbes jahr c++ und ich könnt heuln wenn ich seh wieviel ihr schon draufhabt...

kann das sein das wir langsamer vorankommen weil wir immer aufgeteilt einmal console und einmal grafisch machen???

Das mit dem viel drauf war jetzt ein Witz, denn ich sehe nicht so sonderlich viel C++ an dem Code. Zudem hat C++ mit grafischer Oberfläche ja mal gar nix zu tun und ich finde diese grafischen Anwendungen mit Buttons (und weiß der Geier was noch) taugen auch nicht, um die Sprache und deren Konstrukte an sich zu lernen. C++ sind Klassen, Templates, Referenzen, Operatorüberladung, new, delete usw. ... aber nicht so ein Spielkram hier.

Diapolo
 
P

Benutzer

Gast
Da hat Diaplo recht, du musst schon den Code lernen um ein Programm zu fertigen. Du kannst nicht einfach wie bei einem WYSIWYG Editor mal hier nen Button oder da nen Button einfuegen und dann den Befehl einfuegen. Sicherlich lassen sich Programme mit den entsprechenden Libraries mit einer Oberflaeche verschoenern wie man das von bspw. eMule kennt. (C++ ist nicht nur Eingabeaufforderung bzw. X-Term pur sondern soll schon auch etwas darstellen.
 
Oben
Heartbeat
Neue Beiträge
Anmelden
Registrieren