标题:求大神解答,这个程序为什么会崩溃?
只看楼主
我要敲代码
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-11-19
结帖率:0
已结贴  问题点数:20 回复次数:7 
求大神解答,这个程序为什么会崩溃?
include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct book
{
    int number;
    char name[50];
    char writer[50];
    char press[50];
    int time;
    float price;
    struct book *next;   
 }BOOK;
 
 BOOK *createbook()
 {
     int n,time,number;
     char name[50],writer[50],press[50];
     float price;
     BOOK *p,*head,*tail;
     head=tail=NULL;
    printf("请输入新图书编号:");
    scanf("%d",&number);
    getchar();
    if(number==0)
    {
        return;
    }
    printf("请输入新图书书名:");
    scanf("%s",&name);
    getchar();
    printf("请输入新图书作者:");
    scanf("%s",&writer);
    getchar();
    printf("请输入新图书出版社:");
    scanf("%s",&press);
    getchar();
    printf("请输入新图书出版时间:");
    scanf("%s",&time);
    getchar();
    printf("请输入新图书价格:");
    scanf("%f",&price);
    getchar();
    printf("ok!");
    getchar();
   
   
   
    //问题!!!!!!!!!!!
    while(number!=0)
    {
        p=(BOOK *)malloc(sizeof(BOOK));
        p->number=number;
        strcpy(p->name,name);
        strcpy(p->writer,writer);
        strcpy(p->press,press);
        p->time=time;
        p->price=price;
        p->next=NULL;
        if(head=NULL)
        {
            head=p;
        }
        else
        {
            tail->next=p;
        }
        tail=p;
        do
        {
            printf("请输入图书编号:");
            scanf("%d",&number);
            for(;head!=NULL;head->next)
            {
                if(head->number==number)
                {
                    n=0;
                }   
            }
            if(n==0)
            printf("您输入图书编号重复了,请重新输入!");
            else
            break;
        }while(1);
        if(number==0)
        
        
        break;
        else
        {
        printf("请输入新图书书名:");
        scanf("%s",&name);
        getchar();
        printf("请输入新图书作者:");
        scanf("%s",&writer);
        getchar();
        printf("请输入新图书出版社:");
        scanf("%s",&press);
        getchar();
        printf("请输入新图书出版时间:");
        scanf("%s",&time);
        getchar();
        printf("请输入新图书价格:");
        scanf("%f",&price);
        getchar();
        printf("ok!");
        getchar();   
        }
    }
    return head;
 }
 void main()
 {
     BOOK *head=NULL;
     printf("注意!当输入图书编号为0时退出!");
     head=createbook();
    if(head==NULL)
    printf("操作成功!\n");
  }
搜索更多相关主题的帖子: include number price 
2016-11-23 17:07
我要敲代码
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-11-19
得分:0 
编译是成功的,就是录入数据的时候会崩溃。。。
2016-11-23 17:07
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
得分:10 
编译成功说明语法没有错误,崩溃是因为算法错误

 tail->next=p;???tail指向哪呢。

你还是先模仿别人写的链表先,再自己独立写。
2016-11-23 17:35
我要敲代码
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-11-19
得分:0 
2016-11-23 18:58
我要敲代码
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-11-19
得分:0 
重新编译一下又出现error了
。。。。
2016-11-23 18:58
我要敲代码
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-11-19
得分:0 
回复 3楼 linlulu001
tail->next 指向下一个啊,我前面弄了head=tail=NULL了。。。
2016-11-23 19:01
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:10 
难道你见过有
NULL->next
????不出错才怪呢~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-23 19:17
我要敲代码
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-11-19
得分:0 
回复 7楼 九转星河
难道没有?
2016-11-23 19:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471503-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.122624 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved