巨大bug

//数据结构关于课程设计--------图书馆管理系统的设计
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define _OJ_

typedef struct Book
{
    char title[30];
                      //ISBN编号书籍的标准编号
    char ISBN[30];
   
	char author[30];                 //作者

    char publisher[30];               //出版社
 
    char pub_time[30];                //出版时间
  
    char price[10];                     //书的价格

    int  count;                      //书的数量

    struct Book *next; 
	 
} Book, *Linkbook;

typedef struct Student
{

    int amount;                    //学生已借书的数量

    char stu_num[8];                    //学生的学号

    char name[20];                  //学生的姓名

    char card_num[8];              //借书证的编号

    Linkbook stu_book[6];              //学生所借图书信息 

    struct Student *next;
} Stu, *Linkstu;

//判断输入的字符是否正确
void
input_str(const char *str, char *str1, int number)
{
    char tmp[200];
    printf("%s", str);
    do {
        scanf("%s", tmp);
        if(strlen(tmp) > number) {
            printf("您输入的信息错误请重新输入:
");
        }

    } while(strlen(tmp) > number);
    strcpy(str1, tmp);
}

// 判断输入的整型数字是否正确
int
input_float(const char *str, char *str1, int number)
{
    int i, len, flag;
    char num[200];
    printf("%s", str);
    for (  ;  ;) {
        flag = 0;
        scanf("%s", num);
        len = strlen(num);
        if(len > number) {
            printf("
您输入的信息错误请重新输入:");
            continue;
        }

        for (i = 0; i < len; i++) {
            if((num[i] < '0' || num[i] > '9') && num[i] != '.') {
                printf("
您输入的不是浮点数字请重新输入:");
                flag = 1;      break;
            }
        }

        if(flag == 1)    continue;
        else
            break;
    }
    strcpy(str1, num);

    return 1;
}

//------------------------------------- 判断输入的浮点型是否正确 
int
input_int(const char *str, int number)
{
    int i, len, flag;
    char num[200];
    printf("%s", str);
    for (  ;  ;) {
        flag = 0;
        scanf("%s", num);
        len = strlen(num);
        if(len > number) {
            printf("
您输入的数字超限请重新输入:");
            continue;
        }

        for (i = 0; i < len; i++) {
            if((num[i] < '0' || num[i] > '9')) {
                printf("
您输入的非数字或不是整型数字请重新输入:");
                flag = 1;      break;
            }
        }

        if(flag == 1)    continue;
        else
            break;
    }
    int n = atoi(num);
    return n;
}

//-----------------------------------------------判断输入的ISBN是否正确 
void
input_ISBN(const char *str, char *str1) //International Standard Book Number
{
	int i, flag;
	char tmp[200];               //x-xxx-xxxxx-x
    printf("%s", str);
    for(;;) {
    flag = 0;
     scanf("%s", tmp);
   	 if(strlen(tmp) != 13 || tmp[1] != '-' || tmp[5] != '-' || tmp[11] != '-') {
	    	printf("您输入的格式错误请重新输入格式为:x-xxx-xxxxx-x
");
	    	continue; 
	    }
	    
	 for( i = 0; i < strlen(tmp); i++) {
 		if((tmp[i] < '0' || tmp[i] > '9') && tmp[i] != '-'){
		 printf("您输入的含非数字请重新输入格式为:x-xxx-xxxxx-x");
		 flag = 1;          continue;
		 }	
 	}   
	   if(flag == 1)   continue;
	   else
	       break;
 }
 
    strcpy(str1, tmp);
}




//-----------------------------------------------------------------------------
//书籍收编入库
Linkbook
Creat_book(void)
{
    char ch;
    Linkbook L, head, P;
    head = (Linkbook) malloc (sizeof(Book));
    if(!head) {
        printf("申请空间失败!!!
");    exit(0);
    }
    L = head;
    printf("创建图书:
");

    for (;;) {
      P = (Linkbook) malloc (sizeof(Book));    P->next = NULL;
      input_str("请输图书名称:", P->title, 30);
	 
      input_str("请输入图书的作者:", P->author, 30); 
      input_str("请输入图书的出版社:", P->publisher, 30);
      input_str("请输入图书的出版时间:", P->pub_time, 30);
      input_float("请输入图书的价格:", P->price, 10);
      P->count = input_int("请输入图书的数量:",5);
	 
      input_ISBN("请输入图书的ISBN格式为:x-xxx-xxxxx-x:
", P->ISBN);
      L->next = P;    L = P;

      printf("请按任意键继续添加图书 或者输入q返回:");
      ch = getche(); 
      if (ch == 'q' || ch == 'Q')
          break;
    }
    printf("
");
    return head;
}



void
print_book(Linkbook head)
{
	Linkbook L;
	L = head->next; 
	printf("打印所有图书信息:"); 
    while (L != NULL) {
    	 printf("图书名称:%s
", L->title);
   	printf("图书作者:%s
", L->author);
   	printf("图书出版社:%s
", L->publisher);
   	printf("图书出版时间:%s
", L->pub_time);
   	printf("图书价格:%s
", L->price);
   	printf("图书的ISBN:%s
", L->ISBN);
   	printf("图书数量:%d


", L->count);
	 L = L->next;
   }
    printf("打印完成!!
");
}

//--------------------------------------------------------------




int main(int argc, char const *argv[]) {
#ifndef _OJ_ //ONLINE JUDGE
       freopen("input.txt", "r", stdin);
       //freopen("output.txt", "w", stdout);
#endif
	 Linkbook Book = NULL;  
	 Linkstu Stu = NULL;
	 Book  = Creat_book();
	 printf("booknext%s", Book->next->title);
	 

	  
	  print_book(Book);      
   
   
   
   
    
     return 0;
}
原文地址:https://www.cnblogs.com/airfand/p/5094996.html