C Neuen Ordner erstellen?



  • Das hängt davon ab. In dem Fall wohl gleich wie in C, nur vergiss eben mkdir(), die Funktion gibts nicht.



  • Die Funktion mit mkdir() gibt es das heißt doch Neues Verzeichnis erstellen.

    Ich hab eine neue Header Datei direct.h hinzugefügt funktioniert aber immer noch nicht.



  • saki2 schrieb:

    Die Funktion mit mkdir() gibt es das heißt doch Neues Verzeichnis erstellen.

    Und wo genau steht das?



  • dot schrieb:

    saki2 schrieb:

    Die Funktion mit mkdir() gibt es das heißt doch Neues Verzeichnis erstellen.

    Und wo genau steht das?

    Das ist doch bei BIOS auch so.



  • saki2 schrieb:

    dot schrieb:

    saki2 schrieb:

    Die Funktion mit mkdir() gibt es das heißt doch Neues Verzeichnis erstellen.

    Und wo genau steht das?

    Das ist doch bei BIOS auch so.

    Sry aber: Hä!?



  • Hallo,

    was soll denn an dem Programm nicht funktionieren? Könntest Du etwas mehr Infos liefern?

    BTW.: mkdir() ist nicht ANSI-C. Bei Borland C++ ist der Prototyp in dir.h bei MS Visual C ist der Prototyp in direct.h

    mfg Martin



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum WinAPI verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • unistd.h ist nicht unbedingt Windows-konform.

    Ergänze mal:

    perror("");
    

    nach dem mkdir. Dann sollte ein evtl. Fehler ausgeschrieben werden.



  • saki2 schrieb:

    [...]Das ist doch bei BIOS auch so.

    Äh, dir ist schon klar, dass das BIOS nicht mal ein Dateisystem kennt. Es mag 'n paar Interrupts haben, mit denen man auf Disketten und HDs Sektoren lesen/schreiben kann, aber keine Dateisystemunterstützung. Und Befehle ins BIOS eingeben kann man auch nicht (wenn nur Konfiguration, und das ist in der Regel eine Pseudo-GUI). Das BIOS macht im Prinzip nicht mehr als den POST durzuführen und dann ein paar Interrupt-Vektoren zu setzen.
    Kann es sein, dass du BIOS mit MS Dos verwechselst?
    Und selbst wenn: Diese veralteten (Nichtstandard-!)Funktionen solltest du nicht mehr verwenden. Benutz CreateDirectory und gut ist.
    Der Vollständigkeit halber sei noch erwähnt: Es gäbe noch den Weg über system() aber solche Flausen setz ich dir besser gar nicht erst in den Kopf.



  • saki2 schrieb:

    Ich versuche gerade mit C einen Neuen Ordner zu erstellen, aber ich weiß nicht was ich falsch gemacht habe, hier mein Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[])
    {
    mkdir("C:\\Mein_neuer_Ordner");
    
    return 0;
    }
    

    Ich benutzte übrigens Dev C++.

    Sollte eigentlich gehen.

    mkdir macht es nicht ? Dann gibt es da auch einen Fehlercode.

    Returns:

    The mkdir function returns zero if successful, and a non-zero value otherwise.

    Errors:

    When an error has occurred, errno contains a value indicating the type of error that has been detected.

    Constant Meaning

    EACCES

    Search permission is denied for a component of path or write permission is denied on the parent directory of the directory to be created.

    ENOENT

    The specified path does not exist or path is an empty string.



  • Ich habe jetzt das mkdir mit perror ersetzt funtkioniert immer noch nicht hier mein Code:

    #include <stdio.h> 
    #include <stdlib.h> 
    #include <unistd.h> 
    
    int main(int argc, char *argv[]) 
    { 
    perror ("C:\\Program Files\Mein_neuer_Ordner"); 
    
    return 0; 
    }
    


  • Ok, es ist Fasching. Setz das Zeugs mal kurz ab und den Verstand auf.
    perror() steht im Manual.



  • Mein Verstand ist hier aber der Code stimmt nicht warum auch immer.



  • if ( mkdir( Pfad))
      perror( "nixgeklappt");
    

    rtfm.



  • Jonas OSDever schrieb:

    Und selbst wenn: Diese veralteten (Nichtstandard-!)Funktionen solltest du nicht mehr verwenden. Benutz CreateDirectory und gut ist.

    Ich glaube einige verwechseln hier was. mkdir() ist nicht veraltet und es ist auch standardisiert, in POSIX. Dass er das meint und nicht irgendwelchen alten Borland-Krempel ergibt sich aus dem Include der unistd.h.

    Inwiefern es jetzt besser sein soll, wenn er irgendwelche (garantiert nicht standardisierten) Windows-spezifischen Funktionen benutzt, wie von dir vorgeschlagen, erschließt sich mir nicht. Eine POSIX-Implementierung scheint er ja installiert zu haben (wahrscheinlich Cygwin).

    int mkdir(const char *path, mode_t mode);
    

    Kann also so gar nicht funktionieren. Der Pfad sollte dann natürlich auch passend angegeben werden.

    Näheres:
    http://pubs.opengroup.org/onlinepubs/007904875/functions/mkdir.html


  • Mod

    Ich würde villeicht auch dovon ausgehen, dass der gute "Programmierer" evtl. gar keine Rechte auf dem Rot Verzeichnis hat etwas zu ändern 😉



  • Martin Richter schrieb:

    Ich würde villeicht auch dovon ausgehen, dass der gute "Programmierer" evtl. gar keine Rechte auf dem Rot Verzeichnis hat etwas zu ändern 😉

    Deshalb könnte er ja mal ganz leicht und vorsichtig nachsehen was errno so dazu meint 😉



  • stat schrieb:

    Ich glaube einige verwechseln hier was. mkdir() ist nicht veraltet und es ist auch standardisiert, in POSIX. Dass er das meint und nicht irgendwelchen alten Borland-Krempel ergibt sich aus dem Include der unistd.h.
    Inwiefern es jetzt besser sein soll, wenn er irgendwelche (garantiert nicht standardisierten) Windows-spezifischen Funktionen benutzt, wie von dir vorgeschlagen, erschließt sich mir nicht. Eine POSIX-Implementierung scheint er ja installiert zu haben (wahrscheinlich Cygwin).

    int mkdir(const char *path, mode_t mode);
    

    Kann also so gar nicht funktionieren. Der Pfad sollte dann natürlich auch passend angegeben werden.
    Näheres:
    http://pubs.opengroup.org/onlinepubs/007904875/functions/mkdir.html

    Schön das du in einem WinApi-Forum Windowsspezifische Funktionen als Nicht-Standard bezeichnest. Es ist doch eigentliche so, das Posix der Nicht-Standard unter Windows ist.
    CreateDirectory ist Windowsstandard, seit Anbeginn der WinApi und durch alle Windows-Systeme.
    Der Threadstarter nutzt vermutlich das Posix-Subsystem von Windows. MS weist dieses als deprecated für ihre Betriebssysteme aus und verweist auf _mkdir().
    Damit sich dir der Sinn von CreateDirectory erschliesst:

    BOOL WINAPI CreateDirectory(
      __in      LPCTSTR lpPathName,
      __in_opt  LPSECURITY_ATTRIBUTES lpSecurityAttributes
    );
    

    Man achte auf den zweiten Parameter.

    Einfach mal in den Raum geworfen: Mit Posix kann man die Möglichkeiten der Programmierung nicht ausschöpfen. Deshalb ist das für mich Blödsinn.
    Und möchte man plattformübergreifend arbeiten, dann ist Qt für mich die erste Wahl.

    Nützlicher und interessanter für jemanden, der Windowsprogrammierung mit WinApi machen will, als dein Link ist:
    http://msdn.microsoft.com/de-de/library/59ey50w6.aspx
    bzw.
    http://msdn.microsoft.com/en-us/library/ff818516%28VS.85%29.aspx



  • Der OP hat Windows nicht erwähnt. mkdir() ist eine C-Standardfunktion.



  • Deshalb postet er auch in einem WinApi-Forum?
    Und das mkdir C-Standard sein soll, bezweifele ich.
    Gib doch bitte eine Quelle an.


Anmelden zum Antworten