C 链表中的取消引用错误-非typedef错误
我找不到我的解引用错误来拯救我的生命。就我所能看到的,我已经把我所有的声明都放在了需要的地方,却看不到我在哪里定义了一个糟糕的结构 编辑:粘贴缺少大量代码,但它包含使用指针的所有代码。其他一切都在检查,以确保文件是正确的文件、正确的位置、错误处理等C 链表中的取消引用错误-非typedef错误,c,pointers,memory,C,Pointers,Memory,我找不到我的解引用错误来拯救我的生命。就我所能看到的,我已经把我所有的声明都放在了需要的地方,却看不到我在哪里定义了一个糟糕的结构 编辑:粘贴缺少大量代码,但它包含使用指针的所有代码。其他一切都在检查,以确保文件是正确的文件、正确的位置、错误处理等 typedef struct list{ int pid; char *name; struct list* link; }LIST; void begin(FILE *file, char *argv[]) { struct LIST *ro
typedef struct list{
int pid;
char *name;
struct list* link;
}LIST;
void begin(FILE *file, char *argv[])
{
struct LIST *root, *p, *tail;
struct utmp x[BUFF];
root = NULL;
char *name;
int c;
int i;
struct utmp hold;
int pid;
tail = malloc(sizeof(LIST));
int logins = 0;
int logouts = 0;
for (i=0;i<=BUFF;i++)
{
c = fread(x, sizeof(struct utmp), BUFF, file);
if (strcmp(x[i].ut_user, argv[1]) == 0)
{
if (x[i].ut_type == 7)
{
hold = x[i];
logins++;
pid = x[i].ut_pid;
name = hold.ut_user;
p = create(pid, name); //<--Line 129
if (root == NULL)
{
root = tail = p;
}
else
{
tail->link = p; //<---Line 136
tail = p;
}
printf("%d\n", p->pid); //<---Line 139
}
}
if (x[i].ut_pid == pid && x[i].ut_type == 8)
{
pid = 0;
logouts++;
}
}
LIST *create(int pid, char *name)
{
LIST *p;
p = malloc(sizeof(LIST));
p->pid = pid;
p->link = NULL;
p->name = name;
return p;
}
您的问题在于如何使用structs和typedef。你的定义
typedef struct list{
...
}LIST;
创建两种数据类型:结构struct list及其typedef等效列表。然后在声明变量时,使用未定义的struct LIST。这将生成所有3个错误。编译器假定您正在其他地方定义此结构。人们使用typedef的原因是为了避免以后使用struct。请在此处显示相关代码,而不是提供参考。同时显示确切的错误消息,以及它位于哪一行。对于i=0;我
typedef struct list{
...
}LIST;