문제

char *text라는 멤버가 포함 된 구조물이 있습니다. 구조물에서 객체를 만든 후 텍스트를 문자열로 어떻게 설정합니까?

도움이 되었습니까?

해결책

당신의 구조가 같은 경우

 struct phenom_struct {
    char * text;
 };

그리고 당신은 그것을 할당합니다

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

그런 다음 값을 확인한 후 ps "실패"를 의미하는 NULL (ZERO)이 아니며 다음과 같은 문자열로 텍스트를 설정할 수 있습니다.

 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