Petite erreur désagréable

Résolu
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010 - 4 avril 2005 à 17:46
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010 - 4 avril 2005 à 23:27
Bonsoir,

Lors de la compilation j'ai aucune erreur

Quand j'appelle ma fonction des le debut, aucune erreur, mais pas
contre quand je l'appelle au milieu (cf: plus bas) sa m'affiche une
erreur du genre heu .. le programme a rencontre un probleme et doit
arreter ...



la fonction:



bool player_add(char nick[0xFF], char pass[0xFF])

{

char PLA_DIR[] = "Players\";

char PLA_PIN[] = "Players\";

char PLA_BIN[] = "Players\";

strcat(PLA_DIR,nick);

if(CreateDirectory(PLA_DIR,NULL))

{

strcat(PLA_PIN,nick);

strcat(PLA_PIN,"\\PLAYER.INI");

HANDLE hFile;

hFile = CreateFile(TEXT(PLA_PIN),

GENERIC_WRITE,

0,

NULL,

CREATE_NEW,


FILE_ATTRIBUTE_NORMAL |


FILE_FLAG_OVERLAPPED,

NULL);

CloseHandle(hFile);

WriteProfileSection("player",PLA_PIN);

char nextid[10];

GetPrivateProfileString("tmp","nextid","0",nextid,sizeof(nextid),"C:\\aProgramms\\aRPG\\DataFiles\\tmp.ini");

char nextlog[10];


GetPrivateProfileString("tmp","nextlog","",nextlog,sizeof(nextlog),"C:\\aProgramms\\aRPG\\DataFiles\\tmp.ini");

WritePrivateProfileString("player","id",nextid,PLA_PIN);

WritePrivateProfileString("player","player",nick,PLA_PIN);

WritePrivateProfileString("player","pass",pass,PLA_PIN);

WritePrivateProfileString("player","name","",PLA_PIN);

WritePrivateProfileString("player","level","1",PLA_PIN);

WritePrivateProfileString("player","experience","0",PLA_PIN);

WritePrivateProfileString("player","sexe","0",PLA_PIN);

WritePrivateProfileString("player","class","0",PLA_PIN);

WritePrivateProfileString("player","speed","2",PLA_PIN);

WritePrivateProfileString("player","log",nextlog,PLA_PIN);

WritePrivateProfileString("player","speciality","0",PLA_PIN);

WritePrivateProfileString("player","race","0",PLA_PIN);

WritePrivateProfileString("player","cforce","5",PLA_PIN);

WritePrivateProfileString("player","cresistance","5",PLA_PIN);

WritePrivateProfileString("player","cdexterite","5",PLA_PIN);

WritePrivateProfileString("player","cintelligence","5",PLA_PIN);

WritePrivateProfileString("player","csagesse","5",PLA_PIN);

WritePrivateProfileString("player","cattaque","5",PLA_PIN);

WritePrivateProfileString("player","currentplace","0",PLA_PIN);

WritePrivateProfileString("player","currentnick","0",PLA_PIN);

WritePrivateProfileString("player","currenthost","0",PLA_PIN);

WritePrivateProfileString("player","currentaddress","0",PLA_PIN);

WritePrivateProfileString("player","clan","0",PLA_PIN);

WritePrivateProfileString("player","fights","0",PLA_PIN);

WritePrivateProfileString("player","fates","0",PLA_PIN);

WritePrivateProfileString("player","objects","0",PLA_PIN);

WritePrivateProfileString("player","hfb","0",PLA_PIN);

WritePrivateProfileString("player","pright","0",PLA_PIN);

WritePrivateProfileString("player","pdead","0",PLA_PIN);

WritePrivateProfileString("player","pdwbl","0",PLA_PIN);

WritePrivateProfileString("player","pdpb","0",PLA_PIN);

strcat(PLA_BIN,nick);

strcat(PLA_BIN,"\\BAG.INI");

hFile = CreateFile(TEXT(PLA_BIN),

GENERIC_WRITE,

0,

NULL,

CREATE_NEW,


FILE_ATTRIBUTE_NORMAL |


FILE_FLAG_OVERLAPPED,

NULL);

CloseHandle(hFile);

WriteProfileSection("player",PLA_BIN);

WritePrivateProfileString("player","head","0",PLA_BIN);

WritePrivateProfileString("player","righthand","0",PLA_BIN);

WritePrivateProfileString("player","lefthand","0",PLA_BIN);

WritePrivateProfileString("player","feets","0",PLA_BIN);

WritePrivateProfileString("player","chest","0",PLA_BIN);

WritePrivateProfileString("player","rightfingers","0",PLA_BIN);

WritePrivateProfileString("player","leftfingers","0",PLA_BIN);

WritePrivateProfileString("player","neck","0",PLA_BIN);

WritePrivateProfileString("player","bagpl1","0",PLA_BIN);

WritePrivateProfileString("player","bagpl2","0",PLA_BIN);

WritePrivateProfileString("player","bagpl3","0",PLA_BIN);

WritePrivateProfileString("player","bagpl4","0",PLA_BIN);

WritePrivateProfileString("player","bagpl5","0",PLA_BIN);

WritePrivateProfileString("player","bagpl6","0",PLA_BIN);

WritePrivateProfileString("player","bagpl7","0",PLA_BIN);

WritePrivateProfileString("player","bagpl8","0",PLA_BIN);

WritePrivateProfileString("player","bagpl9","0",PLA_BIN);

WritePrivateProfileString("player","bagpl10","0",PLA_BIN);

return true;

}

else

{

return false;

}

}





l'appel au milieu du code:



if (!player_exist(nick))

{

if((password "") || (nick ""))

{

//

}

else

{

if(player_add(nick,password))

{

//

}

else

{

//

}

}

}



Merci d'avance ;)




I'm a killing Master

6 réponses

bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
4 avril 2005 à 22:40
Il faut un buffer assez large pour stocker une chaine.
char PLA_DIR[0xff];

*PLA_DIR = 0; //chaine vide
strcpy(PLA_DIR,"Players");
/*...*/
strcat(PLA_DIR,nick);
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 avril 2005 à 18:31
if(CreateDirectory(PLA_DIR,NULL))
{
strcat(PLA_PIN,nick);
......
NON, on ne chaine rien sur une constante.

ciao...
BruNews, MVP VC++
0
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
4 avril 2005 à 19:16
merci tres gentil a toi mais jvois pas ou tu vois const :/
PLA_DIR n'est quun char !

I'm a killing Master
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
4 avril 2005 à 19:27
C'est plus qu'un char c'est un char* : il contient l'adresse d'une chaine. Or un strcpy/cat est invalide car l'espace reservé est bien constant ("Players\").
Prevois un buffer plus vaste.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
4 avril 2005 à 19:38
si tu pourrais mdire comment on fait stp :/

I'm a killing Master
0
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
4 avril 2005 à 23:27
MERCI <3<3

I'm a killing Master
0
Rejoignez-nous