在C中返回字符串数组

时间:2018-02-08 09:44:09

标签: c arrays string

我正在使用由第三方应用程序创建的.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指针的方法吗?

2 个答案:

答案 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"));