Strcat ne marche pas avec C++
Fermé
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
-
2 déc. 2011 à 11:27
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 2 déc. 2011 à 13:47
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 2 déc. 2011 à 13:47
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 836
Modifié par fiddy le 2/12/2011 à 12:59
Modifié par fiddy le 2/12/2011 à 12:59
Bonjour,
Première erreur :
#include"chaine.h"; -> pas de ; après un include
De plus mélanger cstring avec string.h c'est pas top.
Pourquoi ne pas plutôt utiliser string et l'opérateur + ?
Et enfin, n'oublie pas de mettre des delete.
Google is your friend
Première erreur :
#include"chaine.h"; -> pas de ; après un include
De plus mélanger cstring avec string.h c'est pas top.
Pourquoi ne pas plutôt utiliser string et l'opérateur + ?
Et enfin, n'oublie pas de mettre des delete.
Google is your friend
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
Modifié par Char Snipeur le 2/12/2011 à 13:38
Modifié par Char Snipeur le 2/12/2011 à 13:38
Salut.
C'est normale que ça ne fonctionne pas, tu fais n'importe quoi.
La bonne façon de mettre une chaine de caractères dans une chaine de caractère est d'utiliser strcpy(). Donc ici remplace s1="koukou"; par strcpy(s1,"koukou");.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
C'est normale que ça ne fonctionne pas, tu fais n'importe quoi.
int main() { char *s1 = new char[20]; char *s2 = new char[20]; là, tu viens de définir 2 pointeurs (s1 et s2) sur char. Il pointent chacun sur un nouveau tableau de char de taille 20 s1="koukou"; s2="toto"; là tu fais pointé s1 sur la chaine de caractères constants "coucou" et s2 sur "toto". Déjà, tu viens de perdre les deux tableaux que tu as créé avant, car ils ne sont plus référencés. Et maintenant tes pointeurs référencent des "const char" strcat(s1,s2); Là, gros problème, tu essais d'écrire dans une chaine de taille 7 des trucs en plus. Et en plus il s'agit de const char ! Un tel code est susceptible de générer une erreur de segmentation. cout<<"la chaine est:"<<s1<<endl; return 0; }
La bonne façon de mettre une chaine de caractères dans une chaine de caractère est d'utiliser strcpy(). Donc ici remplace s1="koukou"; par strcpy(s1,"koukou");.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 836
2 déc. 2011 à 13:45
2 déc. 2011 à 13:45
Arf, j'ai même pas vu qu'il perdait les zones allouées. Heureusement que t'es là :-))).
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
2 déc. 2011 à 13:47
2 déc. 2011 à 13:47
comme le fait remarqué fiddy, si tu fait du C++, autant tout faire avec string, c'est plus simple.
string s1("koukou"); string s2("toto"); s1+=s2;