C Neuen Ordner erstellen?
-
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++.
-
Wo genau soll diese Funktion mkdir() denn herkommen?
saki2 schrieb:
Ich benutzte übrigens Dev C++.
Ich würde dir sehr zu Visual Studio raten.
-
Ich würde dir sehr zu Visual Studio raten.
Hab ich auch auf meinen Computer aber ein C Code funktioniert jedenfalls bei mir nicht.
Der Code funktioniert bei mir trotzdem nicht.
-
Ja, Visual Studio unterstützt kein C99. Aber unter Windows gibt es sowieso keinen Grund C zu benutzen. Verwend C++.
Ja, der Code funktioniert nicht, weil es eben keine Funktion mkdir() gibt. Was du suchst ist die WinAPI Funktion CreateDirectory().
-
Wie mache ich dann den Code in C++.
-
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