String.h sous Visual studio

pierrot -  
sylvain114c Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
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???
A voir également:

1 réponse

sylvain114c Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   2
 
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
0