string zurueckgeben in C

Von: , Frage gestellt am Di, 15. Mai 2001

Hallo,
ich bin gerade am lernen von C und bin dabei auf ein problem gestossen.
Ich moechte eine funktion haben, die einen string wieder gibt, ich weiss, dass das mit einem pointer geht, weiss haltn ur nicht wie.
Ausserdem gibt es ja noch eine andere moeglich, dass ich einen pointer auf einen schon vorhandene string habe (der z.B. in main ist) und diesen dann mit hilfe des pointers umaendern moechte.
Ich habe aber mit beiden probleme und weiss nicht, was ich machen soll, waere nett, wenn mir ihr helfen koenntet, am liebsten mit einem konkreten beispiel und dem code.
Danke vielmals

Steffen

11 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde 0 hilfreich
    Re: string zurueckgeben in C

    Hi Steffen :)

    An deiner Frage erkenne ich, dass du von C nun nicht mal den Hauch einer Ahnung hast. Um da rein zu kommen, kann ich dir das Standardwerk

    Kernighan/Ritchie
    Programmieren in C
    2. Ausgabe, ANSI C
    ISBN 3-446-15497-3 [Buch anschauen]

    empfehlen. Ich könnte dir erklären, wie man einen String zurückgibt, aber du würdest es jetzt noch nicht verstehen ...

    cu Stefan.

    • Antwort von nach 3 Stunden 0 hilfreich
      Re^2: string zurueckgeben in C

      Hmmmm...
      ich sitze gerade in den staaten und habe keine zeit, kein geld und auch keine moeglichkeit das buch zu bestellen, gibt es das auch irgend wo im internet??
      Ich habe noch kein einziges gutes tutorial im internet gefunden.
      Beucher kaufe ich mir, wenn ich wieder zurueck in deutschland bin

      • Antwort von nach 17 Stunden 0 hilfreich
        Re^3: string zurueckgeben in C

        Also, ein sehr gutes Buch ist der Eckel.
        Ich kann dir nur empfehlen es zu kaufen. Auch für später noch gut zum nachschlagen!
        http://airlab.elet.polimi.it/document/tic/tic_c.html

        Meinst du es so?

        Gruß Karsten

        #include <string>
        string& thefunc(string& mystring)
        {
        mystring +="Hallo Steffen";
        return mystring;
        }



        int main(int argc, char* argv[])
        {
        string test("Karsten hilft! -");

        test = thefunc(test);
        std::cout << test;
        }

        • Antwort von nach 17 Stunden 0 hilfreich
          Re^4: string zurueckgeben in C

          Mist,
          du wolltest C nicht C++.
          Habe jede Menge Hilfe in meiner Datenbank.
          http://obelix.et.bocholt.fh-elsenkirchen.de/~pleinka...

          Viel Spaß
          Karsten

          char* thefunc(char* mystring)
          {
          char* att ="- Karsten Hilft!";
          char* newstring = new char[strlen(mystring)+strlen(att)];
          strcpy(newstring, mystring);
          strcat(newstring, att);
          return newstring;
          }



          int main(int argc, char* argv[])
          {

          char* mystring = "Hallo Stefen";
          mystring = thefunc(mystring);
          cout << mystring;
          }

          • Antwort von nach 18 Stunden 0 hilfreich
            Re^5: string zurueckgeben in C

            Muahhh, Karsten :))) Mist,
            du wolltest C nicht C++.

            char* thefunc(char* mystring)
            {
            char* att ="- Karsten Hilft!";
            char* newstring = new char[strlen(mystring)+strlen(att)];
            strcpy(newstring, mystring);
            strcat(newstring, att);
            return newstring;
            }
            int main(int argc, char* argv[])
            {
            char* mystring = "Hallo Stefen";
            mystring = thefunc(mystring);
            cout << mystring;
            }
            


            Das ist immer noch C++ :)))

            Außerdem ist dein mit dem C++-Operator new angelegter Speicherbereich um ein Byte zu klein (abschließendes Nullbyte) und wird nie wieder freigegeben ...

            cu Stefan.

            • Antwort von nach 19 Stunden 0 hilfreich
              Re^6: string zurueckgeben in C

              Hi Steffen,
              erstmal find ich nicht gut, wie du Personen die dir helfen wollen, (im Fall vom ersten Artikel) anmachst. Zum zweiten
              weist du recht viel dafür das du nichts weist!?!

              Wie jetzt? Nun ich programmiere mehr C++ als C habe nun
              aber alles so hoffe ich in C geschrieben. Und den Speicherfreigegeben. Also ich habs allerdings diesmal
              nicht ausprobiert.
              Gruß Karsten char* thefunc(const char* mystring) /* besser ?*/
              {
              char* att ="- Karsten Hilft!";
              char* newstring =
              (char*) malloc(strlen(mystring)+strlen(att)+1);/* besser ? */ strcpy(newstring, mystring);
              strcat(newstring, att);
              return newstring;
              }
              int main(int argc, char* argv[])
              {
              char* mystring = "Hallo Stefen";
              char* mynewstring;/* besser ? */ mynewstring = thefunc(mystring);
              printf("%s", mystring); /* besser ? */
              free(mystring);/* besser ? */
              free(mynewstring);/* besser ? */ }

            • Antwort von nach 19 Stunden 0 hilfreich
              Re^7: string zurueckgeben in C

              Hi Steffen,
              erstmal find ich nicht gut, wie du Personen die dir helfen
              wollen, (im Fall vom ersten Artikel) anmachst. Zum zweiten
              weist du recht viel dafür das du nichts weist!?!

              Ich glaube, Du verwechselst Steffen und Stefan!

              OK, jetzt aber zu dem Problem.
              Hier ist schon ziemlich viel Falsches geschrieben worden, deshalb fange ich mal von vorne an.
              Die Lösung mit malloc() geht zwar, ist aber ziemlich kompliziert. Wenn Du schon vorher weißt, wie lang der String höchstens werden kann, ist die einfachste (und übliche) Lösung, den Speicherplatz im aufrufenden Programm zu definieren. So wird es auch in der Standardbibliothek gemacht. Das geht dann so:

              /* Aufzurufende Funktion */
              void repchar(char *str, int n, char c)
              {
              int i;

              /* fuelle den String mit n mal dem Zeichen c */
              for (i=n-1,i>=0,i--)
              *(str + i) = c;
              *str+n='\0';
              }


              void main()
              {
              char buffer[30]; /* hier wird der Speicher reseviert */

              repchar(buffer, 20, '!');

              printf(buffer);
              printf('\n');
              }

              Ausgabe:

              !!!!!!!!!!!!!!!!!!!!

              Wichtig ist, daß der buffer im Hauptprogramm groß genug dimensioniert wird. Die Funktion verläßt sich dann darauf, daß der Zeiger buffer auf einen Speicherbereich zeigt, der reserviert und lang genug ist.

              Gruß,

              Marcus

            • Antwort von nach 20 Stunden 0 hilfreich
              Sorry

              Hallo,
              ich hatte keine absicht irgend jemanden anzugehen oder belidigen, wenn dies der fall war, dann entschuldige ich mich hiermit. Mein deutsch ist nach 1 jahr nur englisch doch etwas den bach runter gegangen, und da kann so etwas auch passieren.
              Danke vielmals noch

              Steffen

            • Antwort von nach 21 Stunden 0 hilfreich
              Re^7: string zurueckgeben in C

              Hi Karsten :)

              Ich glaube, du meinst mich. Ich habe mein voriges Posting aber nicht böse gemeint. Ich hatte nicht die Absicht, dich irgendwie anzumachen. Ich fand es nur so lustig. Du machst einen Lösungsvorschlag. Dann fällt dir auf, dass der ja in C++ war. Dann machst du einen neuen Lösungsvorschlag, diesmal in C, der aber immer noch C++ war ... Tut mir leid, wenn du dich dadurch angegriffen fühltest, das war wirklich nicht meine Absicht, und ich entschuldige mich auch hiermit dafür ...

              Viele Grüße

              Stefan.



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!