Вопрос

У меня есть структура, которая содержит элемент с именем char *text.После того как я создал объект из структуры, как мне установить текст в строку?

Это было полезно?

Решение

Если ваша структура похожа на

 struct phenom_struct {
    char * text;
 };

и вы распределяете его

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

затем, после проверки, значение ps не равно NULL (ноль), что означает «сбой», вы можете установить текст в строку, подобную этой:

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

Другие советы

Ваш член структуры на самом деле является не строкой, а указателем.Вы можете установить указатель на другую строку с помощью

o.text = "Hello World";

Но будьте осторожны: строка должна жить как минимум столько же, сколько и объект.Возможным способом сделать это является использование malloc, как показано в других ответах.Во многих случаях более желательно использовать в структуре массив символов;то естьвместо

struct foobar {
    ...
    char *text;
}

использовать

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

что, очевидно, требует, чтобы вы знали максимальную длину строки.

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");
}

Пример:

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top