Ich versuche, eine Swap-Funktion zu schreiben, die Daten von 2 Zeigern tauschen wird. Ich erhalte Segmentierungsfehlerfehler. Kann mir bitte jemand helfen?Swap-Daten von Zeigern in C++
P.S. Ich weiß, dass die String-Klasse eine Swap-Funktion eingebaut hat, aber ich versuche zu lernen, wie Zeiger funktionieren.
#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;' schreibe nur ein Zeichen und ändere das Stringliteral. 3) Need 'delete []' –
BLUEPIXY
Verwandt: [Ändern String Writer] (http://stackoverflow.com/q/5464183/514235). – iammilind
i <= strlen (s1) sollte i
Striker