Strcat ne marche pas avec C++

yuri648 Messages postés 677 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai un soucis avec strcat je ne sais pas pourquoi elle ne marche pas
je suis sous linux je travaille avec eclipse eclipse
voici mon programme

#include<iostream>
#include"chaine.h";
#include <cstring>
#include <string.h>
#include <stdio.h>
using namespace std;

int main()
{
/
char *s1 = new char[20];
char *s2 = new char[20];

s1="koukou";
s2="toto";
strcat(s1,s2);

cout<<"la chaine est:"<<s1<<endl;


return 0;
}

et il m'affiche rien

merci d'avance

3 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
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
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Arf, j'ai même pas vu qu'il perdait les zones allouées. Heureusement que t'es là :-))).
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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;
0