Chaine de caractere
Apprenant.3
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
bonsoir tout le monde,
alors on me demande de saisir avec une approche procédurale
-2 chaines de caractères ,
-demander une position a l'utilisateur et a partir de cette position couper la première chaine en une 3e chaine;
- concaténer la troisième chaine et la seconde
-puis d'afficher la nouvelle chaine obtenue
voici mon travail mais ça ne compile si vous pouviez m'aider ça serait géniall!!!
merci d'adance.
alors on me demande de saisir avec une approche procédurale
-2 chaines de caractères ,
-demander une position a l'utilisateur et a partir de cette position couper la première chaine en une 3e chaine;
- concaténer la troisième chaine et la seconde
-puis d'afficher la nouvelle chaine obtenue
#include<stdio.h> #include<conio.h> #include<string.h> void saisie(char c1[20], char c2[20]) { printf("Saisie la first chaine "); gets(c1); printf("Saisie la second chaine "); gets(c2); } void concat (char c1[20], char c2[20], char c3[20]) { int p,i,n; printf("Donner une position "); scanf("%d", &p); n=strlen(c1); for(i=p;i<=strlen(c1);i++) { c3[i]=strcat(c3,c2); } } void affichage(char c[20]) { printf("voici la chaine %c ", c[20]); } int main() { char ch1[20], ch2[20],ch3[20], chrs[20]; saisie(ch1,ch2); concat(ch1,ch2,ch3); affichage(chrs); }
voici mon travail mais ça ne compile si vous pouviez m'aider ça serait géniall!!!
merci d'adance.
A voir également:
- Chaine de caractere
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractere vide - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, les compilateurs retournent parfois un message d'erreur indiquent pourquoi cela ne compile pas: n'en as-tu reçu aucun?
Le compilateur doit indiquer ce qui ne lui plait pas.
Exemple d'erreurs imaginaires :
Exemple d'erreurs imaginaires :
- la fonction gets() est déconseillée depuis 30 ans (qui oserait la conseiller aujourd'hui?), elle est d'ailleurs interdite depuis 2011.
- ligne 20 : strcat() retourne un char* qui ne peut pas être copié dans c3[i] qui est un char.
- ligne 26 : le 21ieme caractère ne fait pas partie du tableau de 20 caractères.
Salut Apprenant.3,
Ton code compile car il ne comporte pas d'erreurs de syntaxe, mais si tu compiles avec les warnings, un compilateur comme gcc va te signaler des comportements anormaux, qui dans la quasi-totalité des cas, sont des erreurs de programmation.
En l'occurrence, ton programme génère les avertissements suivants avec gcc 6.3.0 et les options de compilation
Outre les observations de Dalfab (que tu devrais prendre en compte), tu devrais corriger la fonction
- d'abord détermine c3 à partir du contenu de c1 et de la position saisie
- ensuite concatène c3 et c2
Le résultat de cette concaténation devrait être dans une autre variable, que tu as dénommée
Dal
Ton code compile car il ne comporte pas d'erreurs de syntaxe, mais si tu compiles avec les warnings, un compilateur comme gcc va te signaler des comportements anormaux, qui dans la quasi-totalité des cas, sont des erreurs de programmation.
En l'occurrence, ton programme génère les avertissements suivants avec gcc 6.3.0 et les options de compilation
-Wall(warnings all) :
$ gcc -Wall 35898007.c
35898007.c: In function ‘saisie’:
35898007.c:8:2: warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration]
gets(c1);
^~~~
35898007.c: In function ‘concat’:
35898007.c:20:8: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
c3[i]=strcat(c3,c2);
^
35898007.c:14:10: warning: variable ‘n’ set but not used [-Wunused-but-set-variable]
int p,i,n;
^
/tmp/ccVOcyZp.o : Dans la fonction « saisie » :
35898007.c:(.text+0x2b): avertissement : the `gets' function is dangerous and should not be used.
Outre les observations de Dalfab (que tu devrais prendre en compte), tu devrais corriger la fonction
concat()en supprimant tout à partir de la ligne 17 et décomposer les problèmes :
- d'abord détermine c3 à partir du contenu de c1 et de la position saisie
- ensuite concatène c3 et c2
Le résultat de cette concaténation devrait être dans une autre variable, que tu as dénommée
chrssi je comprends bien ton intention en lisant ton printf final. Cependant, ton code actuel ne modifie pas du tout le contenu de
chrset donc lorsque tu tentes d'afficher le contenu de cette variable, tu n'as pas ce que tu devrais.
Dal
il ne m'a envoyé aucune erreur, mais la fonction concat ne marche pas lors de la compilation
as-tu essayé d'afficher ch1 et ch2?