写出这个库程序,当我运行我的终端时,我收到一个分段错误11。一开始调试时,它似乎位于带有结构的某个地方,但随后它给了我声明文件指针的问题。有人能说明一下这件事吗?
#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;
}发布于 2015-07-31 04:07:41
lib->num_books = 0;这是在制造问题。您尚未初始化lib。
给它分配内存-
lib=malloc(sizeof(struct library));编辑
还不要忘记free分配的内存。
发布于 2015-07-31 03:58:23
1)错误出现在以下一行lib->num_book= 0;
指针变量库在没有初始化的情况下被推迟。
2)另一个错误是,您正在为读取操作"r“打开文件,但试图将该文件用于写操作。
https://stackoverflow.com/questions/31737683
复制相似问题