Chaine de caractères....

Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006 - 24 juin 2004 à 12:55
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 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...

j'utilise 3 variables de type char *:

char *newname = NULL;
char *name = "mytest.txt";
char *mask = "bak.txt";

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

Merci!

3 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
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)

Voila, ++

Alhexman
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
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).
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
24 juin 2004 à 14:11
OK, merci à tous les 2, c'est bon, ça marche pour moi.
Il y avait les 2 erreurs dont vous m'avez parlé.

++
0
Rejoignez-nous