25. oktober 2002 - 10:45
Der er
3 kommentarer og 2 løsninger
Hvordan returneres en string?
Bruger C på en Unix maskine. Jeg har en funktion der skal returnere en string. Har prøvet vha. af char array (nedenstående), men det virker ikke. char[] test() { char str[10] = "Dette skal returneres"; return(str); }
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
25. oktober 2002 - 10:54
#1
f.eks (hvis det er C, skal ner og delete erstattes af malloc og free): #include <iostream.h> #include <string.h> char *Metode1() { char *p = new char[128]; strcpy( p, "hejsa 1" ); return p; } void Metode2( char p[] ) { strcpy( p, "hejsa 2" ); } int main(int argc, char* argv[]) { char *p1 = Metode1(); cout << p1 << endl; delete [] p1; char p2[128]; Metode2( p2 ); cout << p2 << endl; return 0; }
25. oktober 2002 - 10:57
#2
1) "Dette skal returneres" kan ikke være i et char array på 10 elementer... 2) Du skal bruge malloc( char* str = malloc(size) ), ellers nedlægges arrayet når funktionen går ud af scope. Du skal så bare huske at kalde free på pointeren igen, for at frigive memory...
25. oktober 2002 - 11:18
#3
Chries, der er i C, så kan du ikke skrive nøjagtig hvad jeg skal gøre...
25. oktober 2002 - 11:23
#4
følgende burde kunne køre i C: char *Metode1() { char *p = (char*)malloc(128); strcpy( p, "hejsa 1\n" ); return p; } void Metode2( char p[] ) { strcpy( p, "hejsa 2\n" ); } int main(int argc, char* argv[]) { char p2[128]; char *p1 = Metode1(); printf( p1 ); free( p1 ); Metode2( p2 ); printf( p2 ); return 0; }
25. oktober 2002 - 11:44
#5
Tak, det virker...
Kurser inden for grundlæggende programmering