我正在编写一段C代码,我应该使用包含一个函数的静态库。我有一个头文件,包含一个typedef
结构,我应该将其用作输入参数。
我对函数的理解是,我创建了一个在头文件中定义的数据类型的结构,并将其作为指向函数的指针,函数将填充结构。另外两个参数是data
和strlen(data)
。
我的问题是。如何在.c
文件中创建结构,如何从中获取数据?
这是我的.h文件
#include <stdint.h>
#include <stddef.h>
typedef struct
{
uint8_t arrayA[2];
uint8_t arrayB[16];
} structDefinition;
void getData(structDefinition* myStructure, void const* data, size_t dataSize);
这是我的.c文件
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "myHeader.h"
structDefinition myStructure;
int main()
{
char data[5] = {'123AF'};
size_t dataSize = 5;
getData(*myStructure, *data, dataSize);
printf(mySignature.arrayA);
printf(mySignature.arrayB);
return 0;
}
答案 0 :(得分:2)
您需要传递函数结构的地址。
myStructure
是struct Definition
现在通过
getData(&myStructure,data,dataSize);
data
是char
类型的数组,可以传递给char *
请检查字符数组初始化
char data[6] = "123AF";/* char array comes with a nul terminator */
和char数组的长度可以从
获得size_t dataSize = strlen(data);
如果您想知道strlen()
,则不需要第3个参数。
因为你可以从传递的字符串中获取它。
答案 1 :(得分:2)
这个定义
char data[5] = {'123AF'};
错了。 '123AF'
是一个字符文字。它的值是实现定义的。看来你的意思是
char data[5] = { "123AF" };
其中"123AF"
是字符串文字。
函数调用
getData(*myStructure, *data, dataSize);
也错了。它必须看起来像
getData( &myStructure, data, dataSize );
这些输出语句也可能是错误的,因为数组似乎可以包含不终止零的字符
printf(mySignature.arrayA);
printf(mySignature.arrayB);
要正确输出这些数组,您需要查看函数getData
的定义,以确定如何分配数组。