一个c语言代码问题,求专业人士帮忙看一下代码错误的地方在哪 - 爱问答

(爱问答)

一个c语言代码问题,求专业人士帮忙看一下代码错误的地方在哪

下面一段代码中好像是图书输出这个函数出了问题,一运行到那个地方就没有了,不知道怎么解决,求大佬帮忙解决一下

 

```

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define LEN sizeof(struct book)

void book_print(struct book *head_book);//图书输出

struct book *add_Book();//添加书籍

 

struct book

{

char book_name[30];

int book_num;

float price;

char author[20];

struct book *book_next;

};

 

int main()

{

struct book *head_book;

head_book = add_Book();

book_print(head_book);

return 0;

}

 

struct book *add_Book()       //添加书籍,当图书编号为0时停止添加 

{

struct book *head_book, *p1, *p2;

int n = 0;

p1 = p2 = (struct book*)malloc(LEN);

head_book = NULL;

printf("(添加图书)请输入书籍的名字:");

scanf("%s", p1->book_name);

printf("作者:");

scanf("%s", p1->author);

printf("编号:");

scanf("%d", &p1->book_num);

printf("单价:");

scanf("%f", &p1->price);

 

while (p1->book_num != 0)

{

if (p1->book_next == NULL)

{

head_book = p1;

}

else {

p2->book_next = p1;

}

p2 = p1;

p1 = (struct book*)malloc(LEN);

printf("(添加图书)请输入书籍的名字:");

scanf("%s", p1->book_name);

printf("作者:");

scanf("%s", p1->author);

printf("编号:");

scanf("%d", &p1->book_num);

printf("单价:");

scanf("%f", &p1->price);

}

p2->book_next = NULL;

return head_book;

}

 

void book_print(struct book *head_book)  //图书输出 

{

struct book *p;

p = head_book;

printf("本图书馆的所有书籍如下: ");

while (p!= NULL)

{

printf("书籍编号 名字 作者 单价 ");

printf("%d %s %s %.2f ", p->book_num, p->book_name, p->author, p->price);

p = p->book_next;

}

}

```


改好的部分程序

struct book *add_Book()       //添加书籍,当图书编号为0时停止添加
{
   struct book *head_book, *p1, *p2;
   int n = 0;
  head_book =  p1 = p2 = (struct book*)malloc(LEN); // head_book就是第一个
//   head_book = NULL;
   printf("(添加图书)请输入书籍的名字:");
   scanf("%s", p1->book_name);
   printf("作者:");
   scanf("%s", p1->author);
   printf("编号:");
   scanf("%d", &p1->book_num);
   printf("单价:");
   scanf("%f", &p1->price);
   while (p1->book_num != 0)
       {
    //       if (p1->book_next == NULL) //p1->book_next没有赋值,它是随机的
    //           {
   //                head_book = p1;
   //            }
    //       else
    //           {
                   p2->book_next = p1;
   //            }
           p2 = p1;

。。。。。

相关标签:c语言

下一篇:升级一下电脑配置需要升级那些方面主要玩游戏

上一篇:SSL安全证书中RSA和ECDSA有什么区别,哪个更好,优点和缺点,越详细越好,只采纳优质回答,谢谢

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?