Strncat

Résolu
Darkvlador Messages postés 19 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 29 octobre 2006 - 11 juin 2006 à 18:14
Darkvlador Messages postés 19 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 29 octobre 2006 - 11 juin 2006 à 20:26
lu !

j'ai un problème concernant strncat
voilà mon code

char *t1 = "hello";
char *t2 = "12mo";
char *t3;
strncpy(t3, t1, 2);
après
strncat(t3, t2, 2);
et la quand je lance le programme il plante ! 
HELP !

6 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
11 juin 2006 à 18:35
remplace ton t3 par
char t3[256];

___________________________________________
Les plus grands esprits trouvent toujours une solution
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
11 juin 2006 à 18:39
Bon je vais donner plus d'explication. Tu essais de copier le contenue d'une chaine dans un pointeur qui n'a pas de mémoire alloué. C'est certain que ton programme plantera. En déclarent t3 comme un tableau (char t3[256] par exemple), tu t'assure d'avoir de la place pour x caractères. Sinon, tu peut toujours utiliser l'allocation dynamique (malloc et free ou encore new et delete en C++)

___________________________________________
Les plus grands esprits trouvent toujours une solution
3
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
11 juin 2006 à 18:47
(char t3[256] par exemple), tu t'assure d'avoir de la place pour x caractères
 x <= 256

dsl j'avais pas encore ton explication. !
rrk275
3
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
11 juin 2006 à 18:46
Pour explication tu essaye de mettre tes deux chaines  dans un emplacement de memoire quelquonque..
ou tu prend 2 + 2 +1 = 5 octets ... tu essaye donc d'écraser quelque chose et le systeme t'arrete par une segmentation fault !
t3 = (char*)malloc(5 * sizeof(char));//reserve pile poil l'emplacement !
ou
char t3[5];

rrk275
0

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

Posez votre question
Darkvlador Messages postés 19 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 29 octobre 2006
11 juin 2006 à 19:46
lu

merci, je vai voir si sa marche
0
Darkvlador Messages postés 19 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 29 octobre 2006
11 juin 2006 à 20:26
lu


 


Merci sa marche !!
0
Rejoignez-nous