Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006
-
24 juin 2004 à 12:55
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006
-
24 juin 2004 à 14:11
Bonjour,
Voilà, j'ai un problème depuis hier sur uen histoire de chaine de caractères... je sais que c'est une erreur bête, mais je n'arrive pas à trouver d'où ça vient...
Apres je veux modifier la fin du nom de fichier de name de façon ici à ce que : newname = "mytestbak.txt"
j'apelle donc :
Replace(but, mask, newname);
avec le code suivant :
void Replace(char *src, char *mask, char *srnew)
{
char *c;
strncpy(srnew, src, sizeof(src));
c = strstr(srnew, mask);
strncpy(c, mask, sizeof(mask));
}
le problème : à l'execution, j'obtiens access violation sur le premier strncpy (C pas la methode qui fait ça, j'ia eu ça même en reprenant des fonciton de modification de chaines présentes sur le site...)
Je pense que C une question de mémoire, mais vu comment je suis pas une flèche en C++, j'ai pas encore toruvé...
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 24 juin 2004 à 13:00
Tes variables sont de type char *, ce sont donc des pointeurs, tu ne peu pas leur affecter des données si auparavant tu ne leur a pas alloué de la memoire : malloc, calloc ou realloc !!! (HeapAlloc si tu travailles avec les api)
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 24 juin 2004 à 13:13
lorsque tu passe des chaînes de caractères par l'intermédiaire de char*, tu ne peut pas utiliser sizeof() pour connaître la taille de la chaîne, i lfaut la paser en paramètre. sizeof() sur une variable de type char* renverra systématiquement 4 (taille d'un pointeur sur plateforme 32 bits).