【问题标题】:Reading data from a file into a linked list将文件中的数据读入链表
【发布时间】:2013-11-06 02:44:17
【问题描述】:

嘿,我这里有一段代码,它应该将文件读入链表:

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 filename\n");
    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 value not ignored 错误,但我认为我的代码中没有这样做...

任何帮助将不胜感激

【问题讨论】:

  • addButton(window, "从文件加载日历。", *loadFile(), &event);

标签: c file-io io linked-list pass-by-reference


【解决方案1】:

将您的代码更改为:

addButton(window, "Load a calendar from file.", loadFile, &event);

您传递了*loadFile(),它实际上调用了loadFile 函数,然后尝试取消引用void 返回值。你打算做的是传递一个指向函数的指针。

还有一个小问题,因为addButton 期待void (*callback)(void*)ie,您应该传递一个具有单个 void* 参数的 void 函数。但是loadFile 不匹配。要解决此问题,您应该声明 loadFile 以接受 void* 参数。

void loadFile( void *data ) {
    /* etc... */
}

【讨论】:

  • 哦,谢谢你帮我解决这个问题。我不喜欢c。哈哈指针应该被禁止。谢谢哈哈
  • C 很棒,指针也很棒。你需要先了解一些东西,然后再判断它。 =)
猜你喜欢
  • 2011-01-05
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多