【发布时间】:2020-12-12 22:37:45
【问题描述】:
我在使用指针和结构方面迈出了第一步,我正在为我的学校做这项工作,告诉我根据标题对指向结构的指针数组进行排序。一切准备就绪,我想问我是否可以执行此代码。
typedef struct book {
char title[MAX_TITLE];
char isbn[MAX_ISBN];
char authors[MAX_AUTHORS];
char publisher[MAX_PUB_NAME];
} Book;
int main(int argc, char **argv)
{
if(argc < 2)
{
printf("error. insert a file or a valid one when compiling\n");
return 0;
}
FILE* src = fopen(argv[1], "r");
if(src == NULL)
{
printf("\nERROR.Insert valid file or file name\n");
return 0;
}
Book lista_T[MAX_BOOKS];
Book lista_I[MAX_BOOKS];
int bookCount = loadList(lista_T,MAX_BOOKS,src);
int bookCount = loadList(lista_I,MAX_BOOKS,src);
他们告诉我,我必须创建另一个指向该结构的指针列表数组,这次按数组 isbn 对其进行排序,该数组包含特定于每本书的代码,但不会更改我为 lista_T 所做的按标题排序。
我最初以为我可以直接进入并使用相同的参数创建一个数组 lista_I 并通过数组 isbn 对它进行排序,而不涉及按标题排序的另一个数组。但是当我去编译它并尝试打印在 struct lista_T 和 lista_I 的两个数组上排序的所有信息时,我意识到 Lista_T 正确打印了所有内容,但 lista_I 没有打印任何内容,就像那里什么都没有一样。为什么会这样。 抱歉,如果我在这里犯了一些明显的错误,但正如我所说,这是我第一次使用指针和相关的东西。
请告诉我,您是否需要查看我没有放在这里以便进一步提供帮助的部分代码。
附:这项工作中的老师特别告诉不要使用 malloc 或其他类似的东西,而只是预先分配过大的内存分配,以便在一开始对我来说更简单。
【问题讨论】:
-
"to order this array of pointers" 在继续第二部分之前,您应该首先开始使用指针数组来解决任务的第一部分。