2013-01-07 25 views
0

之間的數據我已經共享庫在哪裏完成一些數據世代/處理,並且我已經寫一些API和應用程序來訪問他們並傳輸數據。傳輸共享庫和應用

/* ** * ** * ** * ****應用* ** * ** * **/

char* data1; 

char* data2; 

genratedCamData(1, char* data1 , char *data2); 

printf(" data1 %s ",data1); 
printf(" data2 %s ",data2); 
free(data2); 

/* ** * ** * ** * **庫內 ** * ** * ** * ** * ** * */

int genratedCamData(1, char* datafirst , char *datasecond) 

{ 

if(CAM==1) 
datafirst=getCam1data(); 

printf(" test at lib %s ",type); 

datasecond=malloc(sizeof(char) * 100); 
sprintf(datafirst,"%s",datasecond); 

return 0; 

} 

我試過上述方法得到的DAT一個應用程序,但數據正確打印庫中,但出方的lib(應用程序),它並沒有打印任何內...

一些機構可以幫我用最好的方式來傳達數據b/W庫和應用程序。

回答

4

以C經過值,包括指針參數,你需要通過地址指針char**,一個函數,使函數指針指向不同的地址,也可見這些變化來電顯示:

int genratedCamData(int CAM, char** datafirst , char **datasecond) 
{ 
    *datafirst=getCam1data(); 
    *datasecond=malloc(100); /* sizeof(char) is guaranteed to be 1. */ 
} 

調用:

char* data1; 
char* data2; 
genratedCamData(1, &data1 , &data2); 
+0

但'字符*'S *是*指針。這不是必需的。 – ezod

+0

@ezod,是的,它是進行更改可見給調用者。 – hmjd

+0

我看到,'data1'和'data2'正在在'genratedCamData'分配。你說得對,+1。 – ezod