J’ai le programme ci dessous et j’ai apperement une erreur d’execution. Le debug me retourne “Une violation d’accès (erreur de segmentation) est apparue dans votre programme”. D’evidence le problème vient de strcat (ça marche quand j’enlève la ligne) mais je ne sais pas pourquoi. J’utilise dev c++ sous windows. Merci d’avance pour votre aide
#include <string.h>
int main(int argc, char *argv[])
{
char *name,*title;
printf( "Enter your name: " );
scanf( "%s", name );
title = strcat( name, " the Great" );
printf( "Hello, %s\n", title );
system("PAUSE");
return 0;
}
Quand tu fais ça, tu initialises les pointeurs name & title vers des zones mémoire indéfinies. name & title peuvent valoir 0 (= NULL) comme elles peuvent valoir 475454546.
Essaye ça par exemple :
char name[4096], title[4096];
Sinon documentes toi sur l’allocation en C (malloc, calloc, free, realloc, Xalloc, totoalloc)
Edité le 09/11/2007 à 22:19
bonjour,
j’ai moi aussi un problème avec strncat.
dans le code suivant, jstring est une structure contenant un char* et un entier (la taille de la chaine).
le but est de faire une fonction qui prends comme paramètres 2 jstrings et qui ajoute la chaine du deuxième jstring à la chaine du premier jstring.
voici mon code:
ce que je me suis dit, c’est que peut-être il faudrait réallouer de la place à la fin de la première chaine pour pouvoir ajouter la 2ème? mais je vois pas comment faire. si j’écris