编辑: 以下代码已被修改为工作,因为问题已解决.
具体来说,(*hardwareList.next_item)->next最初是在没有括号的情况下编写的(例如as *hardwareList.next_item->next),编译器也不理解它.
我正在努力解决为什么编译器与我的C代码混淆.我正在尝试创建一个存储所有项目的链接列表,以及指向最后一个"下一个"变量的地址的指针,以便于追加.
typedef struct {
int recordNum;
char toolName[25];
int quantity;
float cost;
} HardwareData;
typedef struct _HardwareListItem{
HardwareData data;
struct _HardwareListItem* next;
} HardwareListItem;
typedef struct _HardwareList {
HardwareListItem* items;
HardwareListItem** next_item;
} HardwareList;
HardwareList readFromFile(FILE* fp)
{
char stopReading = 0;
HardwareList hardwareList = {0};
hardwareList.next_item = &hardwareList.items;
do {
*hardwareList.next_item = (HardwareListItem*)calloc(1, sizeof(HardwareData));
if (*hardwareList.next_item == NULL)
{
fprintf(stderr, "OOM Reading File\n");
fflush(stderr);
exit(EXIT_FAILURE);
}
if (fread(&((*hardwareList.next_item)->data), sizeof(HardwareData), 1, fp) != …Run Code Online (Sandbox Code Playgroud)