유형 문자열의 구조물 멤버를 설정하는 방법
문제
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
제휴하지 않습니다 StackOverflow