我正在使用由第三方应用程序创建的.lib文件。头文件列出了该Lib文件中使用的所有函数。使用.lib文件,我正在读取和写入该应用程序的值。它们具有不同的方法来读取和写入整数值,十进制值和字符串。此方法在C语言中定义。不幸的是,我没有这些方法的任何详细文档。我使用该方法检索整数和小数值。当我使用该方法返回字符串值时,我遇到了问题。
例如,在lib.h文件中,方法名称如
int GetIntData(char *Var, int *data);
int GetDecData(char *Var, double*data);
int GetDataString(char *aName, char*data , int size);
这里Var-表示保存该值的变量的名称。如果我想获得泵开关状态的值。我使用以下方法
int value;
GetIntData("PUMP1",&value);
int status = value;
我可以获得十进制数据和字符串。我需要获取存储在PUMPN变量中的泵的名称。我试过这个
char *sData;
GetDataString("PUMPN ",&sData,10);
但在编译过程中,它会将错误显示为
cannot convert parameter 2 from 'char **' to 'char *'
所以我试过这个
char *sData;
GetDataString("PUMPN ",sData,10);
它在编译期间没有显示错误,但是在执行它时突然停止说“应用程序不工作”可能是在.lib文件中没有正确定义错误处理。
我想确定问题是否在我身边。这是使用字符串的char指针的方法吗?
答案 0 :(得分:0)
以下问题:
char *sData;
GetDataString("PUMPN ",&sData,10);
But during compilation, it shows error as
GetDataString期望char *并且通过& sData传递char **,因为sData已经是char *。
以下问题:
char *sData;
GetDataString("PUMPN ",sData,10);
你正确地将char *传递给GetDataString,但由于你没有分配任何你看到崩溃的内存,要解决这样的问题:
char *sData = malloc(10);
GetDataString("PUMPN ",sData,10);
注意:您需要检查GetDataString所期望的缓冲区的预期大小,并将缓冲区大小传递给它。
答案 1 :(得分:-1)
如果我理解正确GetDataString
在"SAMPLE"
中写sData
。
首先,你必须为sData分配内存。
sData = malloc(strlen("SAMPLE") + 1);
并像这样调用函数
GetDataString("SAMPLE",sData,strlen("SAMPLE"));