0
我有這樣的C代碼:如何從struct讀取數組?
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);
但我得到 「的名字:(空)」。
應該是:'數據=的malloc(的sizeof(*數據));' –
刪除C++標籤(除非你想要評論你不應該使用'malloc',使用'iostreams'而不是'printf'等等)。 – crashmstr
可能的是,意外輸出「name:(null)」與結構初始化的方式有關;也許與「填充結構」的功能有關。 –