Rechercher : dans
Par :

String.h sous Visual studio

Dernière réponse le 28 nov 2002 à 13:02:47 pierrot, le 26 nov 2002 à 13:13:48 
 Signaler ce message aux modérateurs

La portion de code suivante ne marche pas sous visual studio:

char *a,*b;

scanf("%s",a);
strcpy(b,a);// plantage ici
printf("%s",b);

Par contre ca marche avec char a[],b[].
Pourquoi???

Meilleures réponses pour « String.h sous Visual studio » dans :
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.

1

 sylvain114c, le 28 nov 2002 à 13:02:47

Si tu veus faire un strcpy dans un char*, il faut que tu alloues de la memoire pour le texte que tu vas copier.
Si tu fait un strcpy directement sans faire d'allocation, tu ne sait pas ou tu ecrit en memoire et tu peut ecraser des donées. De meme avant les scanf, il faut que tu alloues l'endroit ou les cara=cteres saisies seront stocké.
Utilise malloc pour allouer la meoire et free pour la liberer.
Ton programme devrait mieu marcher ainsi:

char *a,*b;
a=(char*)malloc(sizeof(char)*100);
b=(char*)malloc(sizeof(char)*100);
scanf("%99s",a);
strcpy(b,a);// plantage ici
printf("%s",b);

j'ai rajouté la taille dans le scanf pour eviter un debordement si la ligne saisie par l'utilisateur depasse la memoire allouée.

Sache que les pointeurs et l'allocation dynamique est l'une des chose les plus difficile mais aussi les plus imporatante du C, il est donc dure d'en faire le tour en quelques pharses

Répondre à sylvain114c