Problem mit rename



  • Hallo ich will mit hilfe der rename funktion eine Ordner umbennen.

    Mein Programm liegt auf Laufwerk D:\ und der Ordner der umbenannt werden soll liegt auf Laufwerk C:\

    Wie ich die Ordner auf dem Laufwerk änderen kann wo das Programm liegt weiss ich.

    #include <iostream>
    using namespace std;
    
    #include <stdio.h>
    
    int main ()
    {
    
    int neu;
    char oldname[] = "test";
    char newname[] = "hallo";
    
    neu = rename (oldname,newname);
    
    }
    


  • vieleicht so?

    include <iostream>
    using namespace std;
    
    #include <stdio.h>
    
    int main ()
    {
    
    int neu;
    char oldname[] = "c:\\test";
    char newname[] = "c:\\hallo";
    
    neu = rename (oldname,newname);
    
    }
    


  • Jetzt hats geklappt ty hatte es eben auch fast so nur ich hatte ein \ anstatt 2 ^^



  • Wie kann ich den überprüfen lassen ob das Verzeichnis Existiert oder nicht.

    In der Borland Builder Hilfe steht:

    Rückgabewert

    mkdir liefert den Wert 0 zurück, wenn das neue Verzeichnis erzeugt werden konnte.

    Wenn ein Fehler auftritt, wird -1 zurückgegeben und die globale Variable errno auf einen der beiden folgenden Werte gesetzt:

    EACCES Zugriff nicht gestattet
    ENOENT Datei oder Verzeichnis nicht gefunden

    Aber irgendwie kann ich damit nicht viel Anfangen 😞



  • mkdir ist doch ein DOS-Kommande 😕 das benutzt du doch garnicht.
    Ob ein Ordner existiert kannst du damit prüfen:

    #include<windows.h>
    ...
    
    //Existiert die Datei?
    BOOL FileExists(const char *pcFileName)
    {            //Dateiattribute lesen ist schneller als öffnen
    	return( (GetFileAttributes(pcFileName)==INVALID_FILE_ATTRIBUTES)
    			? FALSE  //lesen nicht möglich -> Datei existiert nicht!
    			: TRUE); //die Datei existiert
    }
    

    Auf Attribute prüfen hat den Vorteil, dass sie auch prüfen kann ob ein Ordner existiert und auch wenn du keine Rechte auf diese Datei hast



  • Noch eine Variante:

    #include <dirent.h>
    
    ...
    
    if(opendir("Verzeichnis") == NULL)
    {
        //Verzeichnis existiert nicht
    }
    else
    {
        //Verzeichnis existiert
    }
    

    keine Garantie!



  • Ich verweise hier einfach mal auf boost.filesystem, da die Funktionen dort immerhin plattformunabhängig implementiert sind 🙂



  • 0k danke.


Anmelden zum Antworten