C char array zurückgeben

Dieses Thema im Forum "C/C++" wurde erstellt von Nano, 24.02.2009.

  1. Nano

    Nano Foren As

    Dabei seit:
    02.12.2006
    Beiträge:
    93
    Zustimmungen:
    0
    Hallo zusammen eine wohl recht simple frage leider scheint irgend ein verständnisproblem bei mir zu herrschen


    Code:
    
    char * bla(){
    
        char str[40];
        return *str;
    
    }
    
    
    
    
    ich möchte gerne den "string" str zurückgeben, bzw das char array
    return str; bzw &str; funktionieren auch nicht, leider verstehe ich nicht warum es falsch ist.

    Ich möchte dein Zeiger auf das arry str[40] bzw auf dessen anfang zurückgeben ( also quasi den "string" )
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. baggio

    baggio Jungspund

    Dabei seit:
    17.05.2007
    Beiträge:
    11
    Zustimmungen:
    0
    In deinem Beispiel wird der Speicher für das Array auf dem Stack angelegt. Nach Verlassen der Funktion wird dieser wieder freigegeben. Mit dynamisch allokierten Speicher sollte das ganze funktionieren:

    Code:
    char *fct(){
      char *str = (char *) malloc(40 * sizeof(char));
      return str;
     }
    
    Nach dem Benutzen des Strings muss der allokierte Speicher natürlich wieder freigegeben werden.

    Gruß, baggio.
     
  4. #3 floyd62, 24.02.2009
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    ... oder du machst den String in bla() statisch:
    Code:
    char * bla(){
        static char str[40];
        ...
        return str;
    }
    
     
  5. #4 Gast1, 25.02.2009
    Zuletzt von einem Moderator bearbeitet: 25.02.2009
    Gast1

    Gast1 Guest

    Gib der funktion einfach die adresse mit, an der der string liegen soll:
    Code:
    void bla(char *dest, size_t max)
    {
     char tmp[1000];
     //...
     strncpy(dest, tmp, max);
     return;
    }
    Dann isr dein string auch nach dem nächsten aufruf von bla vorhanden, und du brauchst dich nicht um die speicherfreigabe kümmern (zumindest nicht von etwas, dass in bla reserviert wurde)
     
  6. Domme.

    Domme. Mitglied

    Dabei seit:
    28.12.2008
    Beiträge:
    33
    Zustimmungen:
    0
    Du könntest deinen String auch in einer Struktur verpacken und dann zurückgeben.

    Code:
    struct char_array { char string[20]; };
    
    struct char_array bla()
    {
          struct char_array str;
          /* ...*/
          return str;
    }
    
    

    so sollte es auch gehen.

    Gruß D.
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 bytepool, 25.02.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hehe, langsam wird es aber echt abenteuerlich hier. Er koennte sich natuerlich auch objekt orientierte features um C herum bauen, und Garbage Collection implementieren. ;)

    Dazu faellt mir mal wieder dieser schoene alte Witz ein:
    http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html

    Sorry fuer das Off-Topic, aber ich find das irgendwie grad so schoen passend hier. ;)

    mfg,
    bytepool
     
  9. Domme.

    Domme. Mitglied

    Dabei seit:
    28.12.2008
    Beiträge:
    33
    Zustimmungen:
    0
Thema: C char array zurückgeben
Besucher kamen mit folgenden Suchen
  1. char array return

    ,
  2. char array zurückgeben c

    ,
  3. c array zurückgeben

    ,
  4. c char array rückgabe,
  5. char array zurückgeben,
  6. c return char array,
  7. c function array zurückgeben,
  8. c char zurückgeben,
  9. char zurückgeben,
  10. C funktion char rückgabewert speicher freigeben,
  11. c char array aus fu
Die Seite wird geladen...

C char array zurückgeben - Ähnliche Themen

  1. aus char array verketteten zeiger erstellen

    aus char array verketteten zeiger erstellen: gegeben: char **array; char *string; array ist initialisiert, mit Speicher allokiert und enthaelt verschieden lange Strings. Nun moechte...
  2. Richard Stallman erhält ACM-Preis für Softwaresysteme

    Richard Stallman erhält ACM-Preis für Softwaresysteme: Die Association for Computing Machinery hat GNU-Gründer Richard Stallman den Preis für Softwaresysteme 2015 zuerkannt. Stallman erhält den...
  3. Richard Stallman gibt Emacs-Projektleitung ab

    Richard Stallman gibt Emacs-Projektleitung ab: Wie der Richard Stallman in einer E-Mail an die Liste des Projektes bekannt gab, gibt er Leitung des Projektes ab. Der neue Maintainer wird mit...
  4. Richard Stallman in Frankfurt

    Richard Stallman in Frankfurt: Richard Stallman, der Gründer von GNU und der Free Software Foundation, wird Anfang des kommenden Monats zwei Vorträge in Frankfurt am Main...
  5. Vor 30 Jahren veröffentlichte Richard Stallman das GNU-Manifest

    Vor 30 Jahren veröffentlichte Richard Stallman das GNU-Manifest: Das GNU-Manifest legte 1985 die Ziele einer Bewegung fest, die sich der Kommerzialisierung von Unix widersetzte und ein freies Betriebssystem...