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;

 }

我尝试了上述方法将数据获取到应用程序,但数据在库内正确打印,但在库外(在应用程序中)它不打印任何内容......

有人可以帮助我使用最佳方式来传达 b/w 库和应用程序的数据吗?

4

1 回答 1

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);
于 2013-01-07T17:10:09.153 回答