Chaine de caractere

Fermé
Apprenant.3 Messages postés 6 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 3 mars 2019 - Modifié le 2 mars 2019 à 01:35
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 4 mars 2019 à 12:37
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


#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:

3 réponses

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
2 mars 2019 à 10:49
bonjour, les compilateurs retournent parfois un message d'erreur indiquent pourquoi cela ne compile pas: n'en as-tu reçu aucun?
0
Apprenant.3 Messages postés 6 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 3 mars 2019
3 mars 2019 à 14:19
Bonjour et merci de m'avoir repondu ,
il ne m'a envoyé aucune erreur, mais la fonction concat ne marche pas lors de la compilation
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > Apprenant.3 Messages postés 6 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 3 mars 2019
3 mars 2019 à 14:21
"ne marche pas": le résultat ne correspond pas à ce que tu attends? qu’obtiens-tu et qu'attends-tu?
0
Apprenant.3 Messages postés 6 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 3 mars 2019
3 mars 2019 à 14:35
oui le resultat ne correspond pas à ce que j'attends, je veux demander une position a l'utilisateur, a partir de cette position couper la première chaine en une 3e chaine et de concaténer la troisieme et la seconde
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > Apprenant.3 Messages postés 6 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 3 mars 2019
3 mars 2019 à 14:51
quelle partie ne fonctionne pas?
as-tu essayé d'afficher ch1 et ch2?
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
3 mars 2019 à 10:25
Le compilateur doit indiquer ce qui ne lui plait pas.

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.
0
Apprenant.3 Messages postés 6 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 3 mars 2019
3 mars 2019 à 14:22
bonjour,
le compilateur ne m'a signaler aucune erreur
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 4 mars 2019 à 12:47
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
-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
chrs
si je comprends bien ton intention en lisant ton printf final. Cependant, ton code actuel ne modifie pas du tout le contenu de
chrs
et donc lorsque tu tentes d'afficher le contenu de cette variable, tu n'as pas ce que tu devrais.

Dal
0