Concatenation
boss
-
boss -
boss -
Bonjour,
J'essaye de concatener 2 chaine de caractères dans un tableau malloc mais j'ai un problème voici tout d'abord le code:
Dans le code il me dise que je n'ai pas assez de mémoire donc c'est que lors de la l'allocation la compilation rencontre un problème mais je ne trouve pas l'erreur dans le code
J'essaye de concatener 2 chaine de caractères dans un tableau malloc mais j'ai un problème voici tout d'abord le code:
#include <stdio.h>
#include <stdlib.h>
int nbreCaractere(const char *chaine1);
int main()
{
/* chaine */
char *a = "SALUT";
char *b = "Anthony";
char *p = NULL;
int nbre_a, nbre_b, resultat = 0, i, x;
/* APPEL DE LA FONCTION */
nbre_a = nbreCaractere(a);
nbre_b = nbreCaractere(b);
resultat = nbre_a + nbre_b;
/* ALLOCATION */
/*____________*/
p = malloc(sizeof(p) * resultat);
if(p == NULL)
{
puts("Vous avez pas assez de memoire");
exit(0);
}
/*____________*/
/* METTRE LES 2 CHAINE DANS LE MALLOC */
/*____________________________________*/
for(i = 0; a != '\0'; i++)
p[i] = a[i];
for(x = 0; b != '\0'; x++, i++)
{
p[i] = b[x];
}
p = '\0';
/*____________________________________*/
/* AFFICHAGE */
/*___________*/
printf("%s", p);
/*___________*/
return 0;
}
/* Calcul la taille des chaine */
int nbreCaractere(const char *chaine1)
{
int cpt = 0;
char nbreCaractere = 0;
/*_______________*/
/*On compte les caractères */
while(cpt != '\0')
{
cpt = chaine1[nbreCaractere];
nbreCaractere++;
}
/*_______________*/
nbreCaractere--; /* onretire -1 pour la valeur nul '\0' */
return nbreCaractere;
}
Dans le code il me dise que je n'ai pas assez de mémoire donc c'est que lors de la l'allocation la compilation rencontre un problème mais je ne trouve pas l'erreur dans le code
21 réponses
Je suis parti du premier code.
Et j'ai apporté les modifications pour qu'ils fonctionnent. J'ai juste tenu compte de toutes mes remarques dans mon premier post en fait.
Ce qui donne :
Si t'as des questions, n'hésite pas.
Relis quand même le premier post, où j'avais détaillé les erreurs.
Cdlt,
Et j'ai apporté les modifications pour qu'ils fonctionnent. J'ai juste tenu compte de toutes mes remarques dans mon premier post en fait.
Ce qui donne :
#include <stdio.h>
#include <stdlib.h>
int nbreCaractere(const char *chaine1);
int main(void)
{
/* chaine */
char *a = "SALUT";
char *b = "Anthony";
char *p = NULL;
int nbre_a, nbre_b, resultat = 0;
/* APPEL DE LA FONCTION */
nbre_a = nbreCaractere(a);
nbre_b = nbreCaractere(b);
resultat = nbre_a + nbre_b;
/* ALLOCATION */
/*____________*/
p = malloc(sizeof(*p) * (resultat+1));
if(p == NULL)
{
puts("Vous avez pas assez de memoire");
exit(0);
}
/*____________*/
/* METTRE LES 2 CHAINE DANS LE MALLOC */
/*____________________________________*/
while((*(p++)=*(a++)));p--;
while((*(p++)=*(b++)));p--;
p-=resultat;
/*____________________________________*/
/* AFFICHAGE */
/*___________*/
printf("%s", p);
fflush(stdout);
free(p),p=NULL;
/*___________*/
return 0;
}
/* Calcul la taille des chaine */
int nbreCaractere(const char *chaine1)
{
int nbreCaractere = 0;
/*_______________*/
/*On compte les caractères */
while(chaine1[nbreCaractere] != '\0')
{
nbreCaractere++;
}
/*_______________*/
return nbreCaractere;
}
Si t'as des questions, n'hésite pas.
Relis quand même le premier post, où j'avais détaillé les erreurs.
Cdlt,