(gelöst)int to char --> Problem
-
Aua, das tut selbst mir weh ... woher willst Du wissen, daß da alles so reinpaßt?
Was macht system(string)? Oder kommst Du gar nicht erst so weit, was ich eher vermute. Das Stichwort heißt Debugger, kannst Du mal präzisieren, wo die Kiste abstürzt?
-
ich glaube selber auch das es ein overflow ist, aber was meinst du mit char array vergrössern ?
das programm stürzt nach dem ersten schleifendurchgang ab, windows bringt di meldung "Projekt.exe funktioniert nicht mehr"
lg. schlubl
-
So richtig entschieden hast du dich aber noch nicht, ob es Win oder Unix sein soll?
Mal machst du md mal mkdir. Auch weiß ich nicht, was "&" dort soll, soll das Unix oder VisualBasic sein? Ich schlage vor, du bringst mal Struktur in deine Kette von Pfaden, alles was konstant ist hinterlegst du auch so, z.B.char *pfad[]={"%d-Administration", "%d-Berechnung", ...};
Oder wie auch immer deine Pfade heißen sollen.
-
Schlubl schrieb:
ich glaube selber auch das es ein overflow ist, aber was meinst du mit char array vergrössern ?
das programm stürzt nach dem ersten schleifendurchgang ab, windows bringt di meldung "Projekt.exe funktioniert nicht mehr"
lg. schlublDiese Meldung kommt nur, wenn du eine Release-Version deines Programms erstellst. Versuch es doch mal mit einem Debug-Build, dann kannst du während der Laufzeit Schritt für Schritt durch deinen Code wandern und ganz genau sehen, was schiefläuft. Hört sich doch besser an als Raten, oder?
-
Schlubl schrieb:
ich glaube selber auch das es ein overflow ist, aber was meinst du mit char array vergrössern ?
das programm stürzt nach dem ersten schleifendurchgang ab, windows bringt di meldung "Projekt.exe funktioniert nicht mehr"
lg. schlublMach einmal vor Zeile 49 ein
printf("\nLänge von String: %d", strlen(string));
rein. Wundert Dich jetzt noch etwas?
Bei Sachen, deren Länge nicht fix ist, empfielt sich dynamische Speicherreservierung per malloc() & co oder wenigstens solltest Du string so groß machen, daß wirklich alles reinpaßt und nochmal: Das Stichwort heißt Debugger!!!
-
geht das mit dem DEV-C++ nicht ?
hab da immer kompilieren gedrückt
-
Schlubl schrieb:
geht das mit dem DEV-C++ nicht ?
hab da immer kompilieren gedrücktWaaas? Auch der DEV C++ hat einen Debugger, aber frag' mich bloß nicht, wie man den anwirft.
Aber Dein ganzer Ansatz ist schonmal gequirltes Hirn mit Ei, aber ein wenig printf()- Debugging hätte es auch schon getan, dann siehst Du ja, wo Dein Array übergeht. Zuwenig Platz, irgendwann überschreibst Du was Kritisches und BUMM!
Mit DEV C++ hat das jedoch gar nix zu tun!
-
Schreib doch mal vor dem system(string); ein puts(string);
Wenn dein Programm soweit kommt, siehst du schon mal was an system übergeben wird.Man kann auch mit sprintf arbeiten.
char *s; s = string; s += sprintf(s,"md %d-", i"); s += sprintf(s," &cd %d-", i"); s += sprintf(s," &md %d-Administration", i"); ... puts(string);
Evtl. Fehler sind infolge von Fieberwahn möglich.
-
hab den speicher vergrössert, hätte nicht gedacht das so viel braucht.
also problem gelöst danke
-
DirkB schrieb:
Man kann auch mit sprintf arbeiten.
char *s; s = string; s += sprintf(s,"md %d-", i"); s += sprintf(s," &cd %d-", i"); s += sprintf(s," &md %d-Administration", i"); ... puts(string);
Evtl. Fehler sind infolge von Fieberwahn möglich.
Ja, kann gut sein, besonders wenn sprintf() was negatives zurück gibt. Evtl. wärs so schöner...
int n=0; char *s; s = string; sprintf(s,"md %d-%n", i,&n); s += n; sprintf(s," &cd %d-%n", i,&n); s += n; sprintf(s," &md %d-Administration", i); ... puts(string);
Natürlich müsste man noch die Rückgabe von sprintf() testen:)