Aide sur un programme C++
Résolu/Fermé
jihane jihane
Messages postés
65
Date d'inscription
samedi 29 octobre 2011
Statut
Membre
Dernière intervention
11 avril 2012
-
23 nov. 2011 à 18:05
jihane jihane Messages postés 65 Date d'inscription samedi 29 octobre 2011 Statut Membre Dernière intervention 11 avril 2012 - 24 nov. 2011 à 09:52
jihane jihane Messages postés 65 Date d'inscription samedi 29 octobre 2011 Statut Membre Dernière intervention 11 avril 2012 - 24 nov. 2011 à 09:52
A voir également:
- Aide sur un programme C++
- Programme demarrage windows 10 - Guide
- Desinstaller un programme - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Mettre en veille un programme - Guide
5 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
23 nov. 2011 à 19:06
23 nov. 2011 à 19:06
matiers=new char*[nb*sizeof (char*)];*********************
cette ligne crée un tableau de chaine de caractère, de taille nb.
une chaine de caractère est un char *, un char*[] est un tableau de chaine
j'ai quand même l'impression qu'il y a une "erreur" bénigne : il faudrait juste nb dans les crochets pour créer un tableau avec nb éléments, pas besoin du nb * sizeof(char*)
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
23 nov. 2011 à 19:07
23 nov. 2011 à 19:07
static char * buff;**************************
là j'ai beaucoup de mal à comprendre pourquoi la variable buff est déclarée static.
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
23 nov. 2011 à 19:09
23 nov. 2011 à 19:09
buff=new char [100];***********************
ici on crée un nouveau tableau en mémoire dynamiquement.
je ne comprends pas pourquoi on le déclare ici avec new, il n'y en a pas besoin.
un simple char buff[100] aurait été suffisant.
d'autre part, il n'y a pas de "delete" qui supprimes cette espace mémoire réservé, donc une erreur qui ne cause pas de crash visible, mais qui rend le programme pas bon du tout ! (fuite de mémoire!)
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
23 nov. 2011 à 19:11
23 nov. 2011 à 19:11
*(matiers+i)=new cha[strlen(buff)+1];******************************
c'est comme :
matiers[i] = new cha[strlen(buff)+1];******************************
on alloue chaque case du tableau "matiers" dynamiquement. (Ici c'est justifié).
Si tu nên comprends pas plus, il faut lire un cours sur les chaines de caractères et les tableaux de chaine.
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
Modifié par Pacorabanix le 23/11/2011 à 19:12
Modifié par Pacorabanix le 23/11/2011 à 19:12
il manque des "r" :
c'est new char[...]
que tu voulais écrire, non ?
c'est new char[...]
que tu voulais écrire, non ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
Modifié par Pacorabanix le 23/11/2011 à 19:13
Modifié par Pacorabanix le 23/11/2011 à 19:13
strcpy(*(matiers + i), buff);************************
regarde l'aide de la fonction....
http://www.cplusplus.com/reference/cstring/strcpy/
jihane jihane
Messages postés
65
Date d'inscription
samedi 29 octobre 2011
Statut
Membre
Dernière intervention
11 avril 2012
24 nov. 2011 à 09:52
24 nov. 2011 à 09:52
Merci bien pour l'aide maintenant j'ai compris le programme :)