String.h sous Visual studio
pierrot
-
sylvain114c Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
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???
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:
- String.h sous Visual studio
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
- Visual petanque - Télécharger - Sport
- Visual c++ 2019 - Guide
- Visual paradigm - Télécharger - Gestion de données
- Darkwave studio - Télécharger - Édition & Montage
1 réponse
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
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