For - Schleife + Copy Befehl => Programm hängt sich auf



  • Guten Morgen,
    folgenden Code habe ich geschrieben :

    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);
              system(CY);
              }
    

    Aber, wenn ich ihn anwende, hängt sich das Programm immer auf.
    Warum?

    Grüße.



  • Ist dein Buffer CY evtl. nicht groß genug für den String?



  • 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 auch system 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 per system 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 das printf vor system 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.


Anmelden zum Antworten