For - Schleife + Copy Befehl => Programm hängt sich auf
-
Dazu müsste man mal sehen was deine ganzen Variablen so beinhalten und von welchem Typ sind. Und was heißt "aufhängen"?
-
Nein, die Variablen klappen 100%ig,
den ohne die For-Schleife läuft das Programm einwand frei,
nur jetzt mit der for-schleife klappt es nicht mehr.Aufhängen,
dann kommt das Vista-Fenster Programm beenden.Und es wird geschlossen, weil es nicht mehr
reagiert.Grüße.
-
Lass Dir doch mal das Kommando, das Du in system reinsteckst noch auf der Konsole ausgeben (flush/endl nicht vergessen, damit der Buffer auch geflusht wird). Dann siehst Du
a) Was wirklich aufgerufen wird
b) Bei welchem Aufruf er hängen bleibt.
-
Wie geht das den?
Kenne mich da noch nicht so gut aus,
programmiere noch nicht so lange in C.Grüße.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Sorry, für den Doppel-Post,
aber kann mir jemand helfen?Grüße.
-
Hans Dieter schrieb:
Sorry, für den Doppel-Post,
aber kann mir jemand helfen?Grüße.
for( TDZ = 1; TDZ < 10; TDZ++) { sprintf (CY, "Copy C:\\Users\\%s\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\%s\\signons%d.txt %s-signons%TDZ.txt ",VN,ON,VN,TDZ,TDZ); printf("%s", CY); system(CY); }
-
Habe es jetzt mit dem prinf -Befehl versucht
aber es klappt, nicht, das Programm kommt noch nicht einmal
so weit, das es den print-F Befehl anwendet,
es stürzt schon vorher ab.Kann es evtl. damit zusammen hängen, das
ich Dateien kopieren will, die nicht vorhanden sind?Den, ich habe 9 Dateien mögliche Dateien im Ordner,
aber es sind immer nur 2 Zufällige vorhanden,d.h.
die anderen 7 gibt es gar nicht.Oder wie kann ich überprüfen ob es die Datei gibt,
und sie dann kopieren ?Grüße.
-
Hans Dieter schrieb:
Habe es jetzt mit dem prinf -Befehl versucht
aber es klappt, nicht, das Programm kommt noch nicht einmal
so weit, das es den print-F Befehl anwendet,
es stürzt schon vorher ab.Dann ist vermutlich dein Buffer zu klein oder die Datentypen in sprintf stimmen nicht. Wie wäre es, den Debugger warm laufen zu lassen?
Hans Dieter schrieb:
Kann es evtl. damit zusammen hängen, das
ich Dateien kopieren will, die nicht vorhanden sind?Nein, wie du schon selbst festgestellt hast, kommt dein Programm nicht einmal bis zu
printf
, also wird auchsystem
nicht ausgeführt.Hans Dieter schrieb:
Oder wie kann ich überprüfen ob es die Datei gibt,
und sie dann kopieren ?Also ein bisschen suchen sollte helfen... (Kleiner Tipp: Es gibt eine Funktion namens
CopyFile
, die eine Datei kopiert, ohne dass du den Befehl persystem
aufrufen musst.)
-
Nein,
der Printf - Befehl kommt ja nach dem System Copy befehl.
Deshalb.Dein Link zu der Seite hat mir nicht wirklich weiter geholfen,
da ich da auch mit suchen keine brauchbare Lösung gefunden
habe.Grüße.
-
Hans Dieter schrieb:
Nein,
der Printf - Befehl kommt ja nach dem System Copy befehl.
Deshalb.Dein Link zu der Seite hat mir nicht wirklich weiter geholfen,
da ich da auch mit suchen keine brauchbare Lösung gefunden
habe.Grüße.
Doppelpost
Laut Debugger tritt eine Zugriffsverletzung( Segmentation Fault ) auf.
Grüße.
-
%s-signons%TDZ.txt ",VN,ON,VN,TDZ,TDZ);
????
-
? Was möchtest du mir damit sagen?
Grüße.
-
Hans Dieter schrieb:
Laut Debugger tritt eine Zugriffsverletzung( Segmentation Fault ) auf.
Ja, wo denn?
Hans Dieter schrieb:
Nein,
der Printf - Befehl kommt ja nach dem System Copy befehl.
Deshalb.Dann hättest du das vielleich mal dazuschreiben können. Ist doch logisch, dass er dann nicht funktioniert, wenn er schon bei sprintf bzw. system abstürzt.
-
JA ich hatte doch den Code da stehen, da kann man doch sehen
wo der printf () befehl ist.Wo er abstürzt sagt er nicht, bzw wo die Verletzung ist auch nicht.
-
Hans Dieter schrieb:
? Was möchtest du mir damit sagen?
Möglicherweise, dass du in deinem Format-String komischerweise
%TDZ
stehen hast, wo wahrscheinlich%s
hin sollte.Hans Dieter schrieb:
JA ich hatte doch den Code da stehen, da kann man doch sehen
wo der printf () befehl ist.Wo hattest du den stehen? Der einzige Code mit
printf
, den ich diesem Thread sehe, hat dasprintf
vorsystem
stehen.
-
Hey,
C/C++ Code:
for( TDZ = 1; TDZ < 10; TDZ++)
{sprintf (CY, "Copy C:\\Users\%s\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\%s\\signons%d.txt %s-signons%TDZ.txt ",VN,ON,VN,TDZ,TDZ);
printf("%s", CY);
system(CY);
}Hier steht der printf() Befehl ja danach.
Das mit dem TDZ ist mir auch schon aufgefallen, habe aber anstatt des TDZ kein s gemacht. Vielleicht liegts daran.
Vile Grüße.
Hans Dieter.
-
Hans Dieter schrieb:
Hey,
C/C++ Code:
for( TDZ = 1; TDZ < 10; TDZ++)
{sprintf (CY, "Copy C:\\Users\%s\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\%s\\signons%d.txt %s-signons%TDZ.txt ",VN,ON,VN,TDZ,TDZ);
printf("%s", CY);
system(CY);
}Hier steht der printf() Befehl ja danach.
Das mit dem TDZ ist mir auch schon aufgefallen, habe aber anstatt des TDZ kein s gemacht. Vielleicht liegts daran.
Vile Grüße.
Hans Dieter.Obwohl ich den Fehler mit dem %s jetzt behoben habe,
stürzt mein Programm noch ab.Kann es daran liegen, das ich Dateien kopieren will,
die nicht existieren? Den es sind immer nur 2 von 9 möglichen
Dateien im Ordner und ich wollte einfach mit einer Schleife alle
9 kopieren, wo bei ja nur 2 existieren oder sollte ich das lieber mit einer
IF-Abfrage machen?Wie auch immer das geht.
Grüße.
-
hab jetzt nichts geprüft:
Aber wird denn CY so schnell verarbeitet wie neugeschrieben?mach das mit der C-Funktion copyfile da prüftst du ob die erfolgreich
ausgeführt wurde, um dann den nächsten Schleifendurchlauf zuzulassen.
-
Danke für den Tip.
Habe es jetzt so geändert klappt allerdings nicht:
for( TDZ = 1; TDZ < 10; TDZ++) { copyfile ("C:/Users/%s/AppData/Roaming/Mozilla/Firefox/Profiles/%s/signons%d.txt" "%s-signons%s.txt",VN,ON,VN,TDZ,TDZ); }
Der Compilier sagt folgendes:
main.o(.text+0x208):main.c: undefined reference to `copyfile'
collect2: ld returned 1 exit statusGrüße.
Wäre sher dankbar für ein kurzes Beispiel wie es richtig geht.