首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分段故障11

分段故障11
EN

Stack Overflow用户
提问于 2015-07-31 03:39:49
回答 2查看 419关注 0票数 2

写出这个库程序,当我运行我的终端时,我收到一个分段错误11。一开始调试时,它似乎位于带有结构的某个地方,但随后它给了我声明文件指针的问题。有人能说明一下这件事吗?

代码语言:javascript
运行
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LENGTH 40
#define MAX_BOOKS 1000
struct book
{
    char title[MAX_LENGTH];
    char author[MAX_LENGTH];
    char subject[MAX_LENGTH];
}*Book;

    struct library
{
    struct book collection[MAX_BOOKS];
    int num_books;
}*lib;

int main()
{
    struct library *lib;
    char title[MAX_LENGTH], author[MAX_LENGTH], subject[MAX_LENGTH];
    Book = NULL;
    lib->num_books = 0;

    int events = 0, selection = 0;
    FILE *ifp;
    ifp = fopen("library.txt", "r");
    if (ifp == NULL)
    {
        printf("\nFile not found\n");
        exit(0);
    }
    fscanf(ifp, "%d", &events);

    for (int i=0;i<events; i++)
    {
        Book = NULL;
        fscanf(ifp, "%d", &selection);

        switch (selection)
        {
            case 1:
                fgets(title, MAX_LENGTH, ifp);
                fgets(author, MAX_LENGTH, ifp);
                fgets(subject, MAX_LENGTH, ifp);
                strcpy(Book->title, title);
                strcpy(Book->author, author);
                strcpy(Book->subject, subject);
                lib->num_books += 1;
                //addBook(lib);
                break;
            case 2:
                lib->num_books -= 1;
                //deleteBook();
                break;

            case 3:
                //search;
                break;

            case 4:

                break;

            case 5:
                break;

            default:
                printf("Invalid command\n");
                break;
        }
    }

    fclose(ifp);
    return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 04:07:41

代码语言:javascript
运行
复制
  lib->num_books = 0;

这是在制造问题。您尚未初始化lib

给它分配内存-

代码语言:javascript
运行
复制
lib=malloc(sizeof(struct library));

编辑

还不要忘记free分配的内存。

票数 2
EN

Stack Overflow用户

发布于 2015-07-31 03:58:23

1)错误出现在以下一行lib->num_book= 0;

指针变量库在没有初始化的情况下被推迟。

2)另一个错误是,您正在为读取操作"r“打开文件,但试图将该文件用于写操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31737683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档