Pergunta

Eu tenho uma estrutura que contém um membro chamado char * texto. Depois eu criei um objeto da struct, então como faço para definir o texto para uma string?

Foi útil?

Solução

Se o seu struct é como

 struct phenom_struct {
    char * text;
 };

e alocá-lo

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

, em seguida, depois de verificar o valor de ps não é NULL (zero), que significa "fracasso", você pode definir o texto para uma string como esta:

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

Outras dicas

Seu membro struct não é realmente uma seqüência, mas um ponteiro. Você pode definir o ponteiro para outra cadeia por

o.text = "Hello World";

Mas você deve ter cuidado, a cadeia tem de viver pelo menos enquanto o objeto. Usando malloc como mostrado nas outras respostas é uma maneira possível de fazer isso. Em muitos casos, é mais desejável a utilização de uma matriz de carvão animal na estrutura; ou seja, em vez de

struct foobar {
    ...
    char *text;
}

uso

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

o que obviamente requer que você sabe o comprimento máximo da cadeia.

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

Exemplo:

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top