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é...
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)
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).