c - 返回 C 中的字符串数组

标签 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 *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 期望的缓冲区大小,并将该大小的缓冲区大小传递给它。

关于c - 返回 C 中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682234/

相关文章:

c - 头文件中的函数是否应该设为 "extern"?

java - 在 java 中,我想使用 for 循环从整数数组中提取奇数位置的每个数字。我犯了什么错误?

c - 在 C 中实现命令解释器

c - 返回包含数组的结构

javascript - 使用 JSON 数据填充选择选项

java - 根据长度拆分并添加字符串

c# - 有没有办法更好地解析字符串?

Java 字符串解析和评估

c - 0-1背包蛮力

java - 从抽象类和子类java创建对象数组