Concatenation de deux chaine
mb42
Messages postés
553
Statut
Membre
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
soit ch1="ab"
et ch2="hg"
apres la concatenetion
ch1="abhg"
je doit faire une solution sans utiliser les fonctions predefinie qui se trouve dans la bibliotheque string.h
ma premiere solution est
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{char ch1[50],ch2[50];
int i;
printf("donner la chaine ch1\n");
scanf("%s",ch1);
printf("donner la chaine ch2\n");
scanf("%s",ch2);
;
for(i=0;i<strlen(ch1)+strlen(ch2);i++)
{ch1[i]+=ch2[i];
}
printf("la nouvelle chaine est %s\n",ch1);
getch();
}
mais elle ne donne pas le resultat juste
je suppose qu'on doit tester sur '\0'
aidez moi c urgent
soit ch1="ab"
et ch2="hg"
apres la concatenetion
ch1="abhg"
je doit faire une solution sans utiliser les fonctions predefinie qui se trouve dans la bibliotheque string.h
ma premiere solution est
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{char ch1[50],ch2[50];
int i;
printf("donner la chaine ch1\n");
scanf("%s",ch1);
printf("donner la chaine ch2\n");
scanf("%s",ch2);
;
for(i=0;i<strlen(ch1)+strlen(ch2);i++)
{ch1[i]+=ch2[i];
}
printf("la nouvelle chaine est %s\n",ch1);
getch();
}
mais elle ne donne pas le resultat juste
je suppose qu'on doit tester sur '\0'
aidez moi c urgent
A voir également:
- Concatenation de deux chaine
- Nombre de jours entre deux dates excel - Guide
- Comment faire deux colonnes sur word - Guide
- Concatener deux cellules excel - Guide
- Deux ecran pc - Guide
- Plus de chaine tv - Guide
6 réponses
Salut,
ch1[i]+=ch2[i];
Cela va additionner les codes ascii modulo 255, mais aucune concaténation.
Pour concaténer deux chaînes, tu dois dans un premier temps allouer une chaîne de la bonne taille. Copier un à un les caractères de la première chaîne et après ceux de la seconde chaîne.
Cdlt
ch1[i]+=ch2[i];
Cela va additionner les codes ascii modulo 255, mais aucune concaténation.
Pour concaténer deux chaînes, tu dois dans un premier temps allouer une chaîne de la bonne taille. Copier un à un les caractères de la première chaîne et après ceux de la seconde chaîne.
Cdlt
J'avais demandé la suppression de ce doublon.
Voir l'autre post: http://www.commentcamarche.net/forum/affich-15052829-concatenation.
et même avec: https://forums.commentcamarche.net/forum/affich-15051914-chaine-de-caractere.
A suivre.
Voir l'autre post: http://www.commentcamarche.net/forum/affich-15052829-concatenation.
et même avec: https://forums.commentcamarche.net/forum/affich-15051914-chaine-de-caractere.
A suivre.
desole pour le doublant
voila une autre solution
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{char ch1[50],ch2[50];
int i;
printf("donner la chaine ch1\n");
scanf("%s",ch1);
printf("donner la chaine ch2\n");
scanf("%s",ch2);
for(i=0;i<strlen(ch1)+strlen(ch2);i++)
{if(ch1[i]=='\0')
ch1[i]=ch2[i];
}
printf("la nouvelle chaine est %s\n",ch2);
getch();
}
mais elle ne donne pas le reultat juste
pouvez corriger ce code
voila une autre solution
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{char ch1[50],ch2[50];
int i;
printf("donner la chaine ch1\n");
scanf("%s",ch1);
printf("donner la chaine ch2\n");
scanf("%s",ch2);
for(i=0;i<strlen(ch1)+strlen(ch2);i++)
{if(ch1[i]=='\0')
ch1[i]=ch2[i];
}
printf("la nouvelle chaine est %s\n",ch2);
getch();
}
mais elle ne donne pas le reultat juste
pouvez corriger ce code
voila ma reponse
mais aussi ne donne pas la valeur juste
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{char ch1[50],ch2[50],ch3[50];
int i;
printf("donner la chaine ch1\n");
scanf("%s",ch1);
printf("donner la chaine ch2\n");
scanf("%s",ch2);
for(i=0;i<strlen(ch1)+strlen(ch2);i++)
{ i=0;
while(ch1[i]!='\0')
{ch3[i]=ch1[i];
i++;
}
if(ch1[i]=='\0')
ch3[i]=ch2[i];
}
printf("la nouvelle chaine est %s\n",ch3);
getch();
}
mais aussi ne donne pas la valeur juste
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{char ch1[50],ch2[50],ch3[50];
int i;
printf("donner la chaine ch1\n");
scanf("%s",ch1);
printf("donner la chaine ch2\n");
scanf("%s",ch2);
for(i=0;i<strlen(ch1)+strlen(ch2);i++)
{ i=0;
while(ch1[i]!='\0')
{ch3[i]=ch1[i];
i++;
}
if(ch1[i]=='\0')
ch3[i]=ch2[i];
}
printf("la nouvelle chaine est %s\n",ch3);
getch();
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hum, et je me permettrais même de rajouter que d'après ton énoncé (je doit faire une solution sans utiliser les fonctions predefinie qui se trouve dans la bibliotheque string.h), tu n'as pas le droit d'utiliser strlen ;-))).
Tu dois donc aussi coder cette fonction.
Tu dois donc aussi coder cette fonction.
for(i=0;i<strlen(ch1)+strlen(ch2);i++) {
i=0;
while(ch1[i]!='\0') {
ch3[i]=ch1[i];
i++;
}
if(ch1[i]=='\0') ch3[i]=ch2[i];
}
à vrai dire je ne comprends pas du tout ce que tu as pensé: ok, la nouvelle chaine est là, mais que font ces deux boucles imbriquées ? Pourquoi modifies-tu le i de ta boucle for directement au début en le mettant à 0 ?
Ensuite je crois que tu te méprends sur le '/0' il n'est utilisé qu'à la fin de la chaine, pas partout après.
Enfin bref, je pense que tu t'écartes en essayant d'utiliser le '/0', tu n'en as pas besoin. la seule chose qu'il te faut c'est :
avoir les idées claires sur ce que tu veux faire AVANT de coder
utiliser strlen() (tu coderas toi-même cette fonction avec un autre nom, et c'est là que tu utiliseras le '/0', pas ailleurs)
faire les choses séparément :
D'ABORD on remplit ch3 avec ch1, jusqu'à la fin de ch1
ENSUITE (dans une boucle SEPAREE), à partir de l'endroit où on s'est arrêté de remplir ch3 (c-à-d la fin de ch1), on remplit le reste avec les éléments de ch2
Donc programme d'abord la première boucle.
Pour la deuxième, si la première fonctionne : demandes-toi à partir de quel indice tu dois commencer à remplir ch3 avec ch2. (aides-toi d'un dessin, fait le d'abord avec un papier et un crayon toi-même).