J'essaye d'écrire une fonction d'échange, qui permutera des données de 2 pointeurs. Je reçois une erreur de segmentation. Quelqu'un peut-il aider, s'il vous plaît?Échange de données de pointeurs en C++
P.S. Je sais que la classe de corde a construit dans la fonction d'échange mais j'essaye d'apprendre comment des pointeurs fonctionnent.
#include<iostream>
#include<cstring>
using namespace std;
void swap(char *, char *);
int main(){
char *s1="blah";
char *s2="crap";
swap(s1, s2);
cout<<s1<<endl<<s2<<endl;
return 0;
}
void swap(char *s1, char *s2){
char *t1 = new char[strlen(s1)+1];
char *t2 = new char[strlen(s2)+1];
for(int i=0; i<=strlen(s1); i++){
t1[i] = s1[i];
}
for(int i=0; i<strlen(s2); i++){
t2[i] = s2[i];
}
cout<<*t1<<endl;
cout<<*t2<<endl;
*s1 = *t2;
*s2=*t1;
}
1) 'i 'i <= strlen (s2)' 2) '* s1 = * t2;' n'écrit qu'un caractère et change le littéral de chaîne. 3) Vous avez besoin de 'supprimer []' –
BLUEPIXY
Connexe: [Modifier la chaîne littérale] (http://stackoverflow.com/q/5464183/514235). – iammilind
i <= strlen (s1) devrait être i
Striker