2017-04-22 9 views
0

구조체 배열에 구조체 배열을 설정하려고합니다. 이 기능을 만들었습니다. 내가 그것을 어떻게 시도하는지 나는 그것을 할 수 없다. 내가이 프로그램을 실행할 때구조체 배열을 매개 변수로 함수로 전달합니다.

struct polygon { 
struct point polygonVertexes[100]; 
}; 
struct polygon polygons[800]; 
int polygonCounter = 0; 


int setPolygonQuardinates(struct point polygonVertexes[]) { 
    memcpy(polygons[polygonCounter].polygonVertexes, polygonVertexes,4); 
} 

int main(){ 

    struct point polygonPoints[100] = {points[point1], points[point2], points[point3], points[point4]}; 

    setPolygonQuardinates(polygonPoints); 
    drawpolygon(); 
} 



void drawpolygon() { 
    for (int i = 0; polygons[i].polygonVertexes != NULL; i++) { 
     glBegin(GL_POLYGON); 
     for (int j= 0; polygons[i].polygonVertexes[j].x != NULL; j++) { 
      struct point pointToDraw = {polygons[i].polygonVertexes[j].x, polygons[i].polygonVertexes[j].y}; 
      glVertex2i(pointToDraw.x, pointToDraw.y); 
     } 
     glEnd(); 
    } 
} 

난 당신이 여기 strcpy을 사용할 수 없습니다

Segmentation fault; core dumped; real time 
+0

"나는 그럴 수 없습니까?" – OldProgrammer

+0

이 코드에 대한 특정 오류가 있습니까? – Gaurav

+0

나쁜 영어로 유감스럽게 생각합니다. 내가 의미했던 것은 다각형 구조의 polygonVertexes 멤버로 polygonPoints 배열을 복사 할 수 없다는 것입니다. setPolygonQuardinates 함수가 실행 된 후 polygonVertexes 멤버에는 정크 값이 있습니다. –

답변

0

다음과 같은 오류를 얻을; 즉, 널로 끝나는 문자열의 경우. A struct은 null로 끝나는 문자열이 아닙니다. 개체를 복사하려면 memcpy을 사용하십시오.

C에서 배열을 전달하려면 배열의 개체 수를 나타내는 두 번째 매개 변수가 일반적으로 전달됩니다. 또는 배열과 길이를 struct에 넣고 struct를 전달합니다.

편집 :이 작업을 수행하는 방법의 예 :이 설명해야하는 경우

void setPolygonQuardinates(struct point* polygonVertexes, size_t polygonVertexesSize) { 
    memcpy(polygons[polygonCounter].polygonVertexes, polygonVertexes, sizeof(point) * polygonVertexesSize); 
} 

int main(){ 
    struct point polygonPoints[100] = {points[point1], points[point2], points[point3], points[point4]}; 
         /*  ^---------v make sure they match */ 
    setPolygonQuardinates(polygonPoints, 100); 
    drawpolygon(); 
} 

은 문의하시기 바랍니다. 나는 그것이 관용적 인 C 코드라고 생각한다.

+0

나는 이것을 시도했지만 여전히 같은 오류가 발생한다. 그 밖에 구조체 배열에 점 배열을 저장하기 위해 내가 할 수있는 일 –

+0

예를 들어 내 대답을 편집했습니다. – InternetAussie

+0

도움을 많이 주셔서 감사합니다, 그게 내 문제를 해결. 나는 여전히 코드 작성법을 배우고 있으며 코드 작성법을 알고 싶어합니다. –