如何读出struct的数组?

时间:2014-05-12 20:05:28

标签: c struct

我有这个C代码:

struct ATAInfo* data;

data = (struct ATAInfo*)malloc(512);

然后我调用一个填充结构的函数。这有点难以解释,因为我调用了一个函数,通过中断进行系统调用,从而从我的cd-rom设备读取信息。 我这样称呼它:

ata_identify(0, data)

功能定义如下:

bool ataIdentify(int device, struct ATAInfo *ataInfo){

现在我填写:

uint16_t pointer = ataInfo;
uint16_t word;
for (int i = 0; i < 256; i++)
{
    word = inw(DATA_PORT);
    *(uint16_t *) pointer = word;
    pointer ++;
}

现在我想从结构中读取一个属性,它被声明为:

uint8_t ModelNumber[40];

我这样做了:

printf("name: %s\n", data->ModelNumber);

但我得到“name:(null)”。

1 个答案:

答案 0 :(得分:1)

这段代码似乎不正确:

uint16_t pointer = ataInfo;
uint16_t word;
for (int i = 0; i < 256; i++)
{
    word = inw(DATA_PORT);
    *(uint16_t *) pointer = word;
    pointer ++;
}

你的意思是:

uint16_t* pointer = (unit16_t*)ataInfo;
uint16_t word;
for (int i = 0; i < 256; i++)
{
    word = inw(DATA_PORT);
    *pointer = word;
    pointer ++;
}