2017-10-28 1 views
0

나는 주어진 int value에 대한 디바이더의 양을 유지하는 프로그램을 만들려고 노력하고있어의 배열에 대한 포인터를 추가 int* dividers포인터

이 코드는 다음과 같습니다

#include <stdio.h> 
#include <stdlib.h> 

typedef struct{ 
    int value; 
    int amount; 
    int* dividers; 
} Divide; 

int main(){ 
Divide ** tt; 
read_dividers(tt,5); 
} 


/* the functions "amount_of_dividers(int g)" and "dividers_of(int g, int amount)" 
used in void read_divider are working properly, they are not needed for this question */ 

void read_divider(Divide *g){ 
    scanf("%d",&(g->value)); 
    g->amount = amount_of_dividers(g->value); 
    g->dividers = dividers_of(g->value,g->amount); 
} 


/* assuming that read_divider works, what causes read_dividerS to crash? */ 

void read_dividers(Divide ** t, int amount){ 
    int i = 0; 
    t = malloc(amount*sizeof(Divide*)); 

    for(i = 0;i<amount;i++){ 
     read_divider(t[i]); 
    } 
} 

Read_dividers 내가 Divide g 변수에 대한 포인터로이 어레이의 각 요소를 채울려고 **t 포인터들의 어레이를 사용한다.

EDIT :이 경우 main()의 입력 : "read_dividers (tt, 5)"는 사용자가 5 int의 값을 제공하고 5 Divide 구조체로 변환됨을 의미합니다. 두 번째로 입력하면 프로그램이 중단됩니다. int

더 많은 정보가 누락 된 경우 언제든지 문의하십시오.

+1

정확히 무엇이 문제입니까? 작동하지 않는 것이 있습니까? – Varun

+0

제공하고있는 입력과받는 출력을 제공하고 출력으로받을 것으로 예상되는 것을 제공하십시오. – stringsn88keys

+0

@Varun 코드 아래의 "편집"을 참조하십시오,이 사이트를 처음 사용합니다. 어떤 종류의 정보를 제공해야할지 고민하면서 가능한 한 질문을 짧게 만드는 것입니다. –

답변

0

초기화되지 않은 t[i]read_divider으로 전달하고 있습니다. t은 Divide에 대한 포인터가 아닌 Divide 포인터에 대한 포인터가됩니다. 첫 번째 패스에서는 운이 좋았을 수도 있습니다. 그러나 첫 번째 호출에서는 실패한 것 같습니다.