Redimensionner tableau dynamque
g30
-
togodo Messages postés 155 Statut Membre -
togodo Messages postés 155 Statut Membre -
Bonjour,
je souhaite representer un nombre sous le forme d'un tableau de char
char * tab = new char[5]; // exemple pour un nombre de 5 chiffre
mais si je veux mettre un plus grand nombre (disont par exemple qu'il contiendra le resultat de sa multiplication par un autre nombre) , pour l'instant je crée juste un autre tableau ayant la nouvelle taille et je copie 1 à 1 les éléments
char * copieTab = new char[6];
for(int i=0;i<taille;i++)
copieTab[i] = tab[i];
tab = copieTab;
n'y aurait il pas une manière plus rapide ?
ps: dans ma manière pour le redimensionnement dois faire un delete[] tab (avant l'assignation du pointeur ?)
je souhaite representer un nombre sous le forme d'un tableau de char
char * tab = new char[5]; // exemple pour un nombre de 5 chiffre
mais si je veux mettre un plus grand nombre (disont par exemple qu'il contiendra le resultat de sa multiplication par un autre nombre) , pour l'instant je crée juste un autre tableau ayant la nouvelle taille et je copie 1 à 1 les éléments
char * copieTab = new char[6];
for(int i=0;i<taille;i++)
copieTab[i] = tab[i];
tab = copieTab;
n'y aurait il pas une manière plus rapide ?
ps: dans ma manière pour le redimensionnement dois faire un delete[] tab (avant l'assignation du pointeur ?)
A voir également:
- Redimensionner tableau dynamque
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
2 réponses
Salut,
Oui, tu dois désallouer puisqu'il est possible que tu pointes ailleurs avec new char.
N'oublie pas de rajouter encore une case pour stocker '\0' en fin de tableau.
Pour copier, un tableau dans un autre, tu peux utiliser strncpy au lieu de faire avec la boucle for.
Sinon, tu peux faire beaucoup plus simple en utilisant la classe String ;)
Oui, tu dois désallouer puisqu'il est possible que tu pointes ailleurs avec new char.
N'oublie pas de rajouter encore une case pour stocker '\0' en fin de tableau.
Pour copier, un tableau dans un autre, tu peux utiliser strncpy au lieu de faire avec la boucle for.
Sinon, tu peux faire beaucoup plus simple en utilisant la classe String ;)
On peut utiliser memcpy, à savoir:
Sinon il existe realloc qui donnerait:
char * tab = malloc (5 * sizeof(char)); char * copieTab = malloc (6 * sizeof(char)); memcpy (copieTab, tab, 5*sizeof(char));Evidemment le 6ème élément n'est pas initialisé.
Sinon il existe realloc qui donnerait:
char * tab = malloc (5 * sizeof(char)); if ( (copieTab = realloc (tab, 6 * sizeof(char))) == NULL) exit (1);