Pointer zu String und String zu Pointen in C?

  • C

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von a.b_om.

    Pointer zu String und String zu Pointen in C?

    Hallo,

    Wisst ihr wie man einen Pointer in einen String umwandelt und wieder zurück?

    Ich möchte, wenn ich meine Linked List sortiere, einfach die Pointers nehme, alle sortiert in einen String und wenn ich ausgebe, splitte ich den String und will mit den Pointern die sortierte Liste ausgeben.

    Ich bräuchte das in C. Ich habe sonst vieles gesehen mit C++, nicht mit C.
    @a.b_om In C ist ein String ein '\0' beendetes Byte-Array.
    Die Variable, die den String repräsentiert, ist der Pointer auf das 1. Byte.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich gehe mal davon aus du meinst die Adresse des Zeigers in einen String umzuwandeln.

    Das kannst du mit "sprintf" und "%p" machen.
    Im Grunde ist das nichts anderes als printf, aber anstelle vom Standard Output Stream wird es an einen char buffer, welchen du als ersten Parameter übergibst, ausgegeben.

    Bitte frag jetzt aber nicht wie du "sprintf" verwendest, dazu gibt es genügend Beispiele.

    Die Zeichenrepräsentation eines Zeigers aber wieder in einen Zeiger zurück zu wandeln ist meines Erachtens nach ein wenig Gefährlich, nichtsdestotrotz hast du hier die Lösung.
    Du kannst die Adresse zurück in eine Ganzzahl umwandeln und die weist du dann der Zeigervariable zu.

    Wie gesagt aber, ist das nun wirklich nicht zu empfehlen, wer weiß was du zwischenzeitlich mit der Speicheradresse anstellst und dann darauf vergisst.
    Oder wenn dein Objekt nur temporär zur Verfügung stand und du denkst, dass es immer noch im Speicher abgelegt ist.
    Das sind alles kleine Dinge die man leicht übersieht, speziell in C und C++, wo Speicher auf Bereiche limitiert wird.
    ----------------------------------------------------------------------------------------------------------------------

    Hier könnte meine Signatur stehen, aber die ist mir abfußen gekommen.

    ----------------------------------------------------------------------------------------------------------------------

    Elanda schrieb:

    Ich gehe mal davon aus du meinst die Adresse des Zeigers in einen String umzuwandeln.

    So ungefähr. Ich erkläre unten ein Beispiel.

    Elanda schrieb:

    Wie gesagt aber, ist das nun wirklich nicht zu empfehlen, wer weiß was du zwischenzeitlich mit der Speicheradresse anstellst und dann darauf vergisst.
    Oder wenn dein Objekt nur temporär zur Verfügung stand und du denkst, dass es immer noch im Speicher abgelegt ist.
    Das sind alles kleine Dinge die man leicht übersieht, speziell in C und C++, wo Speicher auf Bereiche limitiert wird.

    Ich weiss, dass das eine schlechte Idee ist. Dieser String sollte es mir nur vereinfachen eine sortierte Liste hinzubekommen und mit dem String werde ich sonst nichts machen.

    Jetzt zu meinem Beispiel:

    Ich habe 4 Yugiohkarten
    1. Yugiohkarte hat die Adresse = 5DF1
    2. Yugiohkarte hat die Adresse = 5DF2
    3. Yugiohkarte hat die Adresse = 5DF3
    4. Yugiohkarte hat die Adresse = 5DF4
    Ich gehe in die Methode, sortiere diese und gebe den String(Char-Array) "'5DF3' '5DF1' '5DF4' '5DF2'\n" zurück.

    Danach in der Ausgabe, wandelt es den String wieder in Pointers und wird ausgegeben

    Ausgabereihenfolge:
    1. Yugiohkarte in Position 5DF3
    2. Yugiohkarte in Position 5DF1
    3. Yugiohkarte in Position 5DF4
    4. Yugiohkarte in Position 5DF2
    Ungefähr so möchte ich das.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „a.b_om“ ()