Je sollicite votre aide sur un sujet de prog c donné en cours. Je dois manipuler des chaines de caractères sans me servir de string.h et de tableaux du type t[] . Je suis actuellement bloqué sur la concaténation de 2 chaines de caractères
int Longueur(const char *c)
{
int x=0;
for (int i = 0; *(c+i) != '\0'; i++) {
x++;
}
return x;
}
char *concat(char *a,char *c, char *c2)
{
int i=0;
int NbCaractere=Longueur(c);
int NbCaractere2=Longueur(c2);
printf("Le nombre de caractere est de : %d\n",NbCaractere+NbCaractere2);
a=(char*)calloc((NbCaractere+NbCaractere2)+1,sizeof(char));
if(a!=NULL)
{
for ( ;i<NbCaractere; i++) {
*(a+i)=*(c+i);
}
printf(" ");
for ( int j=NbCaractere2;j<NbCaractere+NbCaractere2; j++) {
*(a+j)=*(c2+j);
}
}
return a;
}
// Q6
int main()
{
char *a;
char *c="Salut";
char *c2="les gars";
printf("%s",concat(a,c,c2));
return 0;
}
1) Il est inutile de passer le pointeur aà la fonction concat. Ce qui simplifie son prototype :
char *concat(char *c, char *c2)
2) Le transtypage du retour de calloc en C et inutile.
3) Tu es bien partie pour le début de construction de la chaîne finale (destination), mais c'est au moment de la copie de la seconde chaîne (c2) que ça coince. Tu dois continuer d'utiliser l'indice i pour la chaîne de destination et utiliser l'indice j pour la source c2 de 0 à la taille de la source.
* Tu n'as pas droit aux tableaux static sur la pile [] mais tu as peut-être le droit d'utiliser l'opérateur crochet [] sur les pointeurs ?
avec i initialisé 7 lignes plus haut ? Pourquoi ne pas utiliser la syntaxe de la ligne 22: for(int machin= ?
Ligne 41bis: il manque un free(a)
- Edité par edgarjacobs 19 octobre 2020 à 20:09:58
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Manipulation de chaine de caractères
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent