2014-11-26 4 views
0

내가 좋아하는 뭔가가있는 경우 : 나는 name이 무엇인지 얻고 싶었다 경우구조체 안에 구조체에 액세스

struct foo { 
    struct bar { 
     char name[8]; 
     int temp; 
    } example[100]; 
}; 

, 어떻게 내가 그렇게 위해 할 배열의 첫 번째 요소를 말할 것입니까?

+1

오히려 "이름'**은 **"입니다. * 하나의'name'은 존재하지 않습니다. ** struct **의 구조체의 멤버입니다. (외부 구조체 내부에) ** 배열 **이 있습니다. 그래서, 당신이 * 접근하고자하는 * 이름을 말할 때까지는 도와 줄 수 없습니다 : P –

+0

@ user3268401 답을 수락하는 것을 잊었습니까? – ahcox

답변

2
#include <stdio.h> 

struct foo { 
    struct bar { 
     char name[8]; 
     int temp; 
    } example[100]; 
}; 


int main(void) { 
    struct foo my_foo; 
    printf("%s\n", my_foo.example[0].name); 
    return 0; 
} 
+0

여기에는 printf가 필요하지 않습니다. 문자열을 바로'puts'합니다. – ahcox

+0

@ahcox :'printf ("% s \ n", my_foo.example [0] .name);'는'puts my_foo.example [0] .name);'. –

+0

'printf (my_foo.example [0] .name);'작품도 –

1

코드를 컴파일하면 내가 확인하지 않았지만, 그 것이 뭔가 같은 :

foo var; 
var.example[0].name 
+0

감사합니다. 고맙습니다. – user3268401

1
struct foo myfoo; 
char * the_name; 

/* initialize myfoo ... */ 

the_name = myfoo.example[0].name; 
0
struct foo var; 
printf("name -- %s\n", var.example[0].name); 

참고 :이처럼 strcut를 생략 할 수 조언 :

typedef struct foo foo; 
struct foo { 
    struct bar { 
     char name[8]; 
     int temp; 
    } example[100]; 
}; 

이처럼 바르를 선언 할 의무가되지 않습니다 :

struct foo var; 

하지만

foo var; 

행운을 빕니다;

관련 문제