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