Création d'un répertoire pour application console sous Dev-C++

sheepolata Messages postés 6 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 25 juin 2007 - 21 mars 2005 à 21:58
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011 - 22 mars 2005 à 19:01
<!--StartFragment --> Bonjour,

Je débute en programmation d'application console sous Dev-C++ et j'ai besoin de votre talent :o)
Voilà mon problème : Je voudrais créer un dossier dont le nom est une chaîne de caractère. Appelons-la toto.
Pour voir comment réagit la fonction, je décide de faire un petit programme dont voici le code :

#include <stdio.h>

int main()
{
char toto[6]="youpi";
mkdir(toto);
return(0);
}

Jusque là, pas de problème : la fonction est reconnue et le répertoire est créé.

Je décide donc d'inclure cette fonction dans le programme que j'essaie ( :oD ) de développer. Lors de la compilation, Dev-C++ me claque alors ce message d'erreur :
` mkdir' undeclared (first use this function)

J'ai vu sur les forums des CreateDirectory(), des CreateDirectiryEx(), des makefolder(), des makedir()... Rien ne fonctionne c'est à s'en arracher les cheveux. Je n'utilise peu-être pas correctement mkdir(), ou j'ai peut-être mal interprété le message d'erreur... Bref, par pitié, AIDEZ-MOI !

Merci infiniment, et pardon pour le dérangement...

3 réponses

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
21 mars 2005 à 22:26
#include <windows.h> /* tu dois inclure ce fichier pour utiliser l'API Windows */

int main()
{

CreateDirectory( ".\\ton repertoire", NULL );

return 0;

}

CreateDirectory() renvoie une valeur de type BOOL(TRUE/FALSE)
Si CreateDirectory() échoue, tu peux récupérer le code d'erreur via GetLastError()

DWORD dwErrorCode = GetLastError();

printf("%lu\n", dwErrorCode);

Et pour savoir à quoi correspond ce code d'erreur, regarde labas:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/system_error_codes.asp

Note:
- BOOL est un entier signé; typedef int BOOL;
- DWORD est un entier long non signé; typedef unsigned long DWORD;
- TRUE & FALSE sont deux macros;
- #define TRUE 1
- #define FALSE 0

En passant, MSDN m'indique que pour utiliser `_mkdir()`, on doit inclure direct.h

~(.:: NitRic ::.)~
0
sheepolata Messages postés 6 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 25 juin 2007
22 mars 2005 à 18:04
Merci beaucoup NitRic pour toutes ces précisions.

Je viens de tester CreateDirectory() dans mon programme, et ça marche à merveille... avec Dev-C++.
Le problème c'est que mon programme doit être compilé avec Turbo C 2.0 ("Cahier des Charges" imposé par le jury de l'IUT) et il ne reconnait pas la librairie windows.h donc je dois revenir à mkdir() (qui, elle, est reconnue sous Turbo C...)
J'en parlerai à mon tuteur car ça me semble bizarre que Dev-C++ ne reconnaisse pas mkdir() comme il le faut.

Quoi qu'il en soit, merci pour tout !
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
22 mars 2005 à 19:01
pour mkdir() inclus <direct.h> et ca devrait bien aller

~(.:: NitRic ::.)~
0
Rejoignez-nous