char* in einer funktion übergeben
-
hiho nomma :D,
hier mein aktueller code um etwas an ein chararray anzuhängen. ich habe das problem das ich net weiß wie ich das pchar da wieder rausbekomm
...#include <iostream> using namespace std; int length(char *pchar){ int i=0; while(pchar[i]) i++; return i; } void add_(char *first,char *second,char (? * oder &)out){ int ifirst=length(first); int isecond=length(second); char pchar[ifirst+isecond]; for(int i=0;i<ifirst;i++){ pchar[i]=first[i]; } for(int i=0;i<isecond+1;i++){ pchar[ifirst+i]=second[i]; } *out=*pchar; } int main(){ char bla[]="der peter"; char bla2[]=" ist unlustig"; char *bla3; add_(bla,bla2,*bla3); cout<<bla3;weihnachtgrüße :xmas1: :xmas2:
-
Gar nicht, schreibe direkt in out und hol dir Speicher in der main.
-
#include <iostream> using namespace std; int length(char *pchar){ int i=0; while(pchar[i]) i++; return i; } void add_(char *first,char *second,char *out){ int ifirst=length(first); for(int i=0;i<ifirst;i++){ out[i]=first[i]; } for(int i=0;i<length(second)+1;i++){ out[ifirst+i]=second[i]; } } int main(){ char bla[]="der peter"; char bla2[]=" ist unlustig wie was weis ich was hauptsache der string is lang genug"; char bla3[0]; add_(bla,bla2,bla3); cout<<bla3; }wieso geht das obwohl bla3 eigentlcih null array elemente hat?
-
Weil die Funktion nicht mehr überprüfen kann, wieviel Platz sie eigentlich hat. Wenn du Glück hast, schmiert das Programm beim ersten Anlauf mit einem Speicherfehler ab, wenn du Pech hast, läuft das tatsächlich ohne Kommentar durch (und zerlegt dir als Nebeneffekt irgendwelche anderen Variablen des Programms).
Mein Tip: Pack die char*-Spielereien in eine Kiste, bis du die wichtigsten Grundlagen verstanden hast und verwende stattdessen std::string.