Frage

Ich habe eine Struktur, die ein Mitglied char * Text genannt enthält. Nachdem ich ein Objekt aus der Struktur erstellt haben, dann wie kann ich Text in einen String gesetzt?

War es hilfreich?

Lösung

Wenn Sie Ihre Struktur ist wie

 struct phenom_struct {
    char * text;
 };

und Sie ordnen es

 struct phenom_struct * ps = malloc (sizeof (phenom_struct));

dann nach dem Wert von ps Überprüfung ist nicht NULL (Null), die „Fehler“ bedeutet, Sie Text in eine Zeichenfolge wie folgt festlegen:

 ps->text = "This is a string";

Andere Tipps

Ihr struct Mitglied ist nicht wirklich ein String, sondern ein Zeiger. Sie können den Zeiger auf eine andere Zeichenfolge festgelegt durch

o.text = "Hello World";

Aber man muss vorsichtig sein, muss die Zeichenfolge mindestens so lange leben, wie das Objekt. malloc wie in den anderen Antworten gezeigt ist ein möglicher Weg, das zu tun. In vielen Fällen ist es wünschenswert, einen char-Array in der Struktur zu verwenden; das heißt anstelle von

struct foobar {
    ...
    char *text;
}

Verwendung

struct foobar {
    ...
    char text[MAXLEN];
}

, die Sie offensichtlich die maximale Länge der Zeichenfolge zu wissen, erfordert.

typedef struct myStruct
{
    char *text;
}*MyStruct;

int main()
{
    int len = 50;
    MyStruct s = (MyStruct)malloc(sizeof MyStruct);
    s->text = (char*)malloc(len * sizeof char);
    strcpy(s->text, "a string whose length is less than len");
}

Beispiel:

struct Foo {
    char* text;
};

Foo f;
f.text = "something";

// or
f.text = strdup("something"); // create a copy
// use the f.text ...
free(f.text); // free the copy
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top