Et puis il ne faut pas indiquer le signe & avant le nom de la chaîne de caractères. Et dans ce cas ton programme marche à condition de remplacer chaine2[0] par chaine1[0] (tu vois pourquoi ?).
Pour placer la première lettre du mot en fin de mot, j'aurais procédé ainsi :
n = strlen(mot) ; // (je n'ai pas contrôlé que n soit < 100, il vaudrait mieux...)
/* mot[0] est la première lettre, mot[n-1] est la dernière lettre */
mot[n] = mot[0] ; // après la dernière, on place la première
mot[n+1] = '\0' ; // et on n'oublie pas de mettre un caractère nul pour clore la chaîne
C'est une autre façon de faire, sans utiliser les fonctions de manipulation de chaînes mais en exploitant le fait qu'une chaîne est un tableau.
Une chaîne de caractères, c'est un tableau de caractères avec en dernier le caractère '\0'. Pour comprendre l'exercice, c'est comme pour les pointeurs. On fait un dessin :
avant, exemple pour le mot BOUCHER:
+---+---+---+---+---+---+---+---+---+---+---+---+---+
| B | O | U | C | H | E | R | \0|...|...|...|...|...|
+---+---+---+---+---+---+---+---+---+---+---+---+---+
après:
+---+---+---+---+---+---+---+---+---+---+---+---+---+
| L | O | U | C | H | E | R | B | e | m | \0|...|...|
+---+---+---+---+---+---+---+---+---+---+---+---+---+
Il suffit donc de placer les caractères au bon endroit.
Et attention, la fonction scanf_sde Microsoft demande des paramètres différents de scanf. Pour les formats %c %s et %[], il faut ajouter après l'adresse du paramètre le nombre maximum de caractères accessibles. Donc dans ton cas, ça serait :
scanf_s( "%s", chaine1, 100 ); // après l'adresse du tableau chaine1 on indique sa capacité
> je ne vois pas pourquoi remplacer chaîne2 par chaîne1
Je n'ai pas dit ça. J'ai dit de remplacer chaine2[0] par chaine1[0]. C'est parce que tu as mis la lettre 'e' dans chaine2[0], alors qu'il faut mettre la première lettre de chaine1 (qui n'est pas forcément 'e').
Il me semble, tel que tu as appelé 'strcat', que le résultat de la concaténation de "l" et chaine1 sera mis dans la chaîne "l". Or cette chaîne ne t'appartient pas (ce n'est pas une variable mais une constante littérale), tu ne peux pas la modifier, d'où l'erreur de segmentation.
Mais je ne crois pas que ce soit la bonne méthode : ça va ajouter "l" devant la chaîne 1, alors que le but est, comme tu l'as dit, de remplacer la première lettre de chaine1 par un "l" (à moins que j'aie mal compris). Donc il faut juste remplacer chaine[0] par un "l".
je n'arrive toujours pas à remplacer la première lettre de la chaîne de caractère par la lettre "l" c'est la seul chose qui me manque. Pouvez vous m'aider svp mon code actuelle est le même que mon dernier message.
j'ai déjà essayé de faire ça mais ça ne fonctionne pas, enfaîte je ne vois juste pas comment le mettre et pourquoi. De plus moi j'ai chaine1[10] et non pas 0, il faudrait bien une taille pour un caractère non ?
D'après ce que je lis, tu as essayé "l" , pas 'l' -- la première écriture est un tableau de caractères, la seconde est un caractère.
chaine1[10] ligne 7 déclare un tableau de 10 éléments de type caractère, chaine1[0] (dans ce que j'ai écit) est le premier élément de ce tableau -- et donc, un caractère dans le cas présent.
Au fait, pas 'l' mais 'L' d'après l'énoncé.
- Edité par edgarjacobs 12 décembre 2019 à 22:13:48
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
j'ai déjà essayé de faire ça mais ça ne fonctionne pas, enfaîte je ne vois juste pas comment le mettre et pourquoi. De plus moi j'ai chaine1[10] et non pas 0, il faudrait bien une taille pour un caractère non ?
Quand tu reçois un conseil et que ça ne marche pas, il y a deux possibilités :
- le conseil était mauvais,
- tu as mal appliqué le conseil.
N'oublie pas la deuxième possibilité !
chaine1[10] n'est pas un objet, c'est un extrait de la ligne de déclaration de l'objet chaine1 : on indique qu'il contient 10 cases (qui vont de 0 à 9). Pour remplacer la première lettre, il faut modifier la première case. La première case s'appelle chaine1[0]. C'est comme ça en C (et la chaîne complète ne s'appelle pas chaine1[10] mais chaine1 tout court).
- Edité par robun 13 décembre 2019 à 12:52:52
chaine de caractère
× 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.
En recherche d'emploi.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent