2014-05-08 2 views
0

누군가 FLOAT8 [] 값을 받고 INT [] 값을 반환하는 C 함수의 템플릿을 제공 할 수 있습니까?Postgresql FLOAT8 []을 취하여 INT []를 반환하는 C 함수?

예제에서는 출력 숫자 유형과 동일한 입력 숫자 유형을 사용합니다.

새 INT []을 만들고 반환하는 방법을 보여주는 예제가 없습니다.

+0

질문 및 답변을 수정하십시오. 'INT []'에 의해 'int []'을 (를) 정말로 의미합니까? 'FLOAT8'의 의미를 정의 할 수 있습니까? –

+0

내장 된 캐스트 함수는 이미 이것을 수행합니다 :'select ('{1.0,2.1,3.0}':: float []) :: int []' –

+0

가능한 중복 [Postgres C 함수에서 배열 반환 ?] (http://stackoverflow.com/questions/23557980/return-an-array-from-a-postgres-c-function) –

답변

0

한 가지 방법 :

{ 
INT *aaa = NULL; 
FLOAT8 bbb[10]; 

... 


aaa = my_function1(bbb); 
printf("%d, %d\n", aaa[0], aaa[1]); /* Output: "123, 234" 

... 

if(aaa) 
    free(aaa); 

} 


또 다른 방법 :

{ 
INT *aaa = NULL; 
FLOAT8 bbb[10]; 

... 


my_function1(bbb, &aaa); 
printf("%d, %d\n", aaa[0], aaa[1]); /* Output: "123, 234" 

... 

if(aaa) 
    free(aaa); 

} 
0 : 위의이 같은

void my_function2(FLOAT8 *IN_float8, INT **OUT_int) 
    { 
    INT *yyy=malloc(sizeof(INT) * 10); 

    zzz[0] = 123; 
    zzz[1] = 234; 
    ... 

    if(OUT_int) 
     *OUT_int = yyy; 
    else 
     { 
     free(yyy); 
     fprintf(stderr, "Oops! You gave me a NULL pointer for OUT_int.\n"); 
     } 

    return; 
    } 

전화 위의이 같은

INT *my_function1(FLOAT8 *float8) 
    { 
    INT *zzz = malloc(sizeof(INT) * 10); 

    zzz[0] = 123; 
    zzz[1] = 234; 
    ... 

    return(zzz); 
    } 

전화

관련 문제