Datei mit Variablen Umbenennen



  • Hallo Jungs,

    ich arbeit grad an nem Programm um Dateien umzubenennen. Solang die Namen fix sind ist das ja alles kein Problem.

    Schaut bei mir so aus:

    int result;

    char oldname[] ="test.txt";
    char newname[] ="newname.txt";
    result= rename( oldname , newname );
    if ( result == 0 )
    puts ( "Erfolgreich umbenannt" );
    else
    perror( "Fehler beim Umbenennen" );

    Problem ist nur, dass das ganze Variabel sein soll.
    Meine Dateien die ich umbenennen will schauen so aus "RTD_XXX"
    Das "RTD_" ist immer fix für "XXX" werden Zahlen eingesetzt.

    Kleines Beispiel:
    Ich geb ihm über ne Eingabe 135 und 136 vor....heißt er soll Dateien mit RTD_135 und RTD_136 z.B. in Bild_1 und Bild_2 umbenennen.

    Hat jemand ne Idee dazu ?



  • Hitpics schrieb:

    Hat jemand ne Idee dazu ?

    Ja, den Code der nicht funktioniert posten wäre ein Anfang. 😉



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Namen einlesen, Funktion aufrufen? Werde konkreter! Wo genau hast du Schwierigkeiten?

    Außerdem sieht das sehr nach C aus, daher hab ich's mal verschoben.



  • int result;
    int zahl;
    cin >> zahl;
    char oldname[255];
    sprintf(oldname, "%d", zahl); // Hab hier Probleme das ganze mit nem Text und der Dateiendung zu verbinden
    char newname[] ="newname.txt";
    result= rename( oldname , newname );
    if ( result == 0 )
    puts ( "Erfolgreich umbenannt" );
    else
    perror( "Fehler beim Umbenennen" );

    }

    return 0;

    Außerdem weiß ich nicht obs dafür nicht ne elegantere Variante gibt ! Hab erst vor 3 Wochen mitm programmieren angefangen!



  • Hitpics schrieb:

    Außerdem weiß ich nicht obs dafür nicht ne elegantere Variante gibt !

    Ja, gibt es.

    Hitpics schrieb:

    Hab erst vor 3 Wochen mitm programmieren angefangen!

    Schön, dann kannst du dir merken, dass es sehr sinnvoll ist, sich VOR Schreiben eines Programms für (in diesem Fall) C oder C++ zu entscheiden. Du benutzt beides.

    int i,j;
    for(i=135,j=1;i<=136;++i,++j)
    {
      char n1[FILENAME_MAX],n2[FILENAME_MAX];
      sprintf(n1,"RTD_%d",i);
      sprintf(n2,"Bild_%d",j);
      if( !rename(n1,n2) )
        puts(n1);
      else
        puts("Fehler");
    }
    


  • Ich sag auf jeden Fall schon mal Danke! Leider hab ich noch so meine Probleme mit der Unterscheidung. Muss ich mir noch genauer anschauen.



  • Das Einzige was fehlt ist die Dateiendung hinter dem Int-Wert (.jpg)



  • Hitpics schrieb:

    Das Einzige was fehlt ist die Dateiendung hinter dem Int-Wert (.jpg)

    Davon hast du bis jetzt nichts gesagt.
    Schau mal wie das RTD da drin steht.

    sprintf(n1,"RTD_%d.jpg",i);
    

Anmelden zum Antworten