嘿,我这里有一大块代码,应该将文件读入链表:
void loadFile() {
Event *event;
FILE *file;
int nRead = 7;
char filename[30];
LinkedList *list;
list = (LinkedList*)malloc(sizeof(LinkedList));
event = (Event*)malloc(sizeof(Event));
printf("Please input filenamen");
scanf("%s", filename);
file = fopen(filename, "r");
nRead = fscanf(file, "%d-%d-%d %d:%d %d %s", &(list->head->event->date->year), &(list->head->event->date->month), &(list->head->event->date->day), &(list->head->event->time->hours), &(list->head->event->time->minutes), &(list->head->event->duration), event->name);
if(nRead != 7) {
printf("Error in reading file.n");
}
fclose(file);
}
在这里,我有我的主要部分
int main(int argc, char **argv) {
Window *window;
Event *event;
FILE *file;
window = createWindow("Calendar");
if(argc == 2) {
file = fopen(argv[1], "r");
if(file == NULL) {
printf("Could not open file.n");
} else {
printf("File opened successfully!n");
}
}
else {
addButton(window, "Load a calendar from file.", *loadFile(), &event); //ERROR HERE
}
}
这里是addButton(不需要知道功能,只需要语法帮助)
void addButton(Window *window, char *label, void (*callback)(void*), void *data);
我收到错误:
assignment.c: In function ‘main’:
assignment.c:22: error: void value not ignored as it ought to be
我真的不知道为什么,我被困在这一部分。我环顾四周,我看到当您将带有 void 返回的函数分配给变量或其他东西时,会发生 void 值未忽略错误,但我认为我没有在我的代码中这样做......
任何帮助将不胜感激
将代码更改为:
addButton(window, "Load a calendar from file.", loadFile, &event);
您正在传递 *loadFile()
,它实际上调用了 loadFile
函数,然后尝试取消引用void
返回值。 您打算做的是传递指向该函数的指针。
还有一个小问题,因为addButton
期待void (*callback)(void*)
。 也就是说,你应该传递一个具有单个void*
参数的 void 函数。 但loadFile
不匹配。 若要解决此问题,应声明接受void*
参数的loadFile
。
void loadFile( void *data ) {
/* etc... */
}