eine Datei überschreiben



  • char szHilf[128];
    
    sprintf(szHilf, "cp test/%s" Ordner);
    
    system("szHilf");
    

    DrGreenthumb schrieb:

    An der Stelle ist system aber keine gute Idee, ....

    völlig richtig



  • Horst2 schrieb:

    char szHilf[128];
    
    sprintf(szHilf, "cp test/%s" Ordner);
    
    system("szHilf");
    

    Nicht wirklich...

    Lasst doch mal dieses blöde system()



  • @interpreter: su solltest meinen beitrag auch zu ende lesen

    Horst2 schrieb:

    DrGreenthumb schrieb:

    An der Stelle ist system aber keine gute Idee, ....

    völlig richtig

    😃 😃 😃



  • Horst2 schrieb:

    @interpreter: su solltest meinen beitrag auch zu ende lesen

    Habe ich. Obwohl du system() nicht befürwortest bringst du dennoch ein Beispiel mit system() 😉

    PS: Du solltest auch nochmal deinen Code anschauen 😉



  • ok hast recht.

    char szHilf[128];
    
    sprintf(szHilf, "cp test/%s" Ordner);
    
    system(szHilf);
    

    wenn dann sollte man das falsche (schlechte) schon richtig hinschreiben



  • system, igit... das sollte man nicht benutzen.

    Ich benutze immer meine eigene Funktion

    int copyfile(const char* source, const char* destiny)
    {
      FILE* src, *dty;
      unsigned int read=0;
      char buffer[MAX_LENGTH];
    
      if((src=fopen(source, "rb")) == NULL)
        return -1;
      if((dty=fopen(destiny, "wb")) == NULL) {
        fclose(src);
        return -2;
      }
    
      while( (read = fread(buffer,1,MAX_LENGTH, src)) > 0 ) {
        if(read != fwrite(buffer, 1, read, dty)) {
          fclose(dty);
          fclose(src);
          error_call("Not all data could be copied into %s. Proc. aborted.", destiny);
          fclose(dty);
          fclose(src);
          return -3;
          }
      }
    
      fclose(dty);
      fclose(src);
      return 0;
    }
    

    wobei error_call ein wrapper für fprintf(stderr, ...



  • supertux schrieb:

    Ich benutze immer meine eigene Funktion

    int copyfile(const char* source, const char* destiny)
    

    Schlag mal im Wörterbuch nach, was destiny bedeutet 😃

    while( (read = fread(buffer,1,MAX_LENGTH, src)) > 0 ) {
        if(read != fwrite(buffer, 1, read, dty)) {
          fclose(dty);
          fclose(src);
          error_call("Not all data could be copied into %s. Proc. aborted.", destiny);
          fclose(dty);
          fclose(src);
          return -3;
          }
      }
    
      fclose(dty);
      fclose(src);
      return 0;
    }
    

    da sind aber viel fclose() drin... Und ich weiß auch nicht, ob diese Fehlerabfrage so sinnvoll ist.

    Und überhaupt, um eine Datei zu kopieren, würde ich im Realfall nur die direkten Systemfunktionen nehmen. Aber naja, is ja das Ansi-C-Forum hier.



  • DrGreenthumb schrieb:

    Schlag mal im Wörterbuch nach, was destiny bedeutet 😃

    😃 da hast du Recht, den Code habe ich schon lange Zeit her geschrieben und verstand damals nicht viel Englisch, ich hab jetzt nur Copy & Paste gemacht 😃



  • also da benutz ich lieber kurz system.
    Wenn jemand eine GUTE Alternative hat dann her damit.



  • hoeher schrieb:

    also da benutz ich lieber kurz system.
    Wenn jemand eine GUTE Alternative hat dann her damit.

    Also ich benutze lieber Schlüssel als Granaten.

    Jede Alternative ist besser als system()!

    Kurz mal eine kleine Dateikopierfunktion geschrieben und schon kann man diese benutzen und das auch noch viel kürzer und einfacher als mit system(). Wenn man diese Funktion dann auch noch in eine extra .c Datei auslagert, dann kann man sie sogar in anderen Programmen verwenden.


Anmelden zum Antworten