鱼C论坛

 找回密码
 立即注册
查看: 5804|回复: 3

[已解决]程序报错求修改

[复制链接]
发表于 2021-3-17 13:44:26 | 显示全部楼层 |阅读模式
60鱼币
程序很长,但是运行只有四处报错,网上查了以后知道错因了但还是不知道怎么修改,求大佬帮助。

  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<conio.h>
  5. typedef struct
  6. {
  7.         char bn[]; //图书名字
  8.         char num[] ;//图书编号
  9.        
  10. } STD;

  11. typedef struct
  12. {
  13.         STD *data;  //指向STD类型的指针变量
  14.         int listSize;
  15.         int length;
  16.   } SqList;
  17.   int inieSqList(SqList *L,int max)   //初始化
  18. {
  19.         L->data = (STD *)malloc(max *sizeof(STD));
  20.         if(L->data == NULL)
  21.         {
  22.                 printf("空间申请失败!\n");
  23.                 return 0;
  24.         }
  25.         L->listSize = max;
  26.         L->length = 0;
  27.         return 1;
  28. }
  29. int insertSqList(SqList *L, int i,STD x)        //插入操作
  30. {
  31.         int k;
  32.         if(i < 1||i > L->length+1)
  33.         {
  34.                 printf("插入位置异常!\n");
  35.                 return 0;
  36.         }
  37.         if(L->length >= L->listSize)
  38.         {
  39.                 printf("容量不够!\n");
  40.                 return 0;
  41.         }
  42.         for(k = L->length;k >= i;k--)  //向后移动一组数据
  43.         {
  44.                 L->data[k] = L->data[k - 1];
  45.          }
  46.          L->data[i -1] = x;                                //将待插入数据放入指定位置
  47.          L->length = L->length + 1;         //长度加1
  48.          return 1;
  49. }

  50. int deleteSqList(SqList *L ,int i, STD *x) //删除操作
  51. {
  52.         int k;
  53.         if (L->length == 0)
  54.         {
  55.                 printf("没有数据,不能删除!\n");
  56.                 return 0;
  57.          }
  58.          if (i <= 0 || i >L->length)
  59.          {
  60.                  printf("位置异常!\n");
  61.                  return 0;
  62.          }
  63.          *x = L->data[i - 1];
  64.          for(k = i;k < L->length; k++)        //向前移动一组数据
  65.          {
  66.                  L->data[k - 1] = L->data[k];
  67.          }
  68.          L->length = L->length - 1;
  69.          return 1;
  70. }

  71. int locationSqList1(SqList L,char *x)  //按书名查找
  72. {
  73.         int i;
  74.         if(L.length == 0)
  75.         {
  76.                 printf("没有数据!\n");
  77.                 return 0;
  78.         }
  79.         for(i = 0;i < L.length;i++)
  80.         {
  81.                 if(strcmp(L.data[i].bn,x) == 0)
  82.                 return i + 1;
  83.         }
  84.         return 0;
  85. }
  86. int locationSqList2(SqList L,char *x)  //按书号查找
  87. {
  88.         int i;
  89.         if(L.length == 0)
  90.         {
  91.                 printf("没有数据!\n");
  92.                 return 0;
  93.         }
  94.         for(i = 0;i < L.length;i++)
  95.         {
  96.                 if(strcmp(L.data[i].num,x) == 0)
  97.                 return i + 1;
  98.         }
  99.         return 0;
  100. }

  101. int getSqList(SqList L,int i, STD *x)        //按指定位置查找
  102. {
  103.         if (L.length == 0)
  104.         {
  105.                 printf("没有数据!\n");
  106.                 return 0;
  107.         }
  108.         if (i < 1 || i > L.length)
  109.         {
  110.                 printf("位置不合理!\n");
  111.                 return 0;
  112.         }
  113.         *x = L.data[i - 1];
  114.         return 1;
  115. }

  116. int ListLength(SqList *L)        //求顺序表长度
  117. {
  118.     return (L->length);
  119. }

  120. int updateSqList(SqList L ,int i,STD x)                //修改成员
  121. {
  122.         if(L.length == 0)
  123.         {
  124.                 printf("没有数据,不能更新!\n");
  125.                 return 0;
  126.         }
  127.         if(i<1||i>L.length)
  128.         {
  129.                 printf("位置不合理!\n");
  130.                 return 0;
  131.         }
  132.         L.data[i - 1] = x;
  133.         return 1;
  134. }

  135. int dispSqList(SqList L)                        //输出顺序表
  136. {
  137.         int i;
  138.         if(L.length == 0)
  139.         {
  140.                 printf("没有数据!\n");
  141.                 return 0;
  142.         }
  143.         for(i = 0;i<L.length;i++)
  144.         {
  145.                 printf("%s %s \n",L.data[i].bn,L.data[i].num);
  146.         }
  147.         return 1;
  148. }

  149. int menu()                                                        //菜单功能
  150. {
  151.         int n;
  152.         while(1)
  153.         {
  154.                 system("cls");
  155.                 printf("****欢迎使用图书信息管理系统!****\n");
  156.                 printf("1.初始化空表        2.插入图书数据\n");
  157.                 printf("3.输出数据                4.删除数据\n");
  158.                 printf("5.书号查找                6.书名查找\n");
  159.                 printf("7.求表长                8.修改数据\n");
  160.          }
  161.   }
  162.   
  163. main()
  164. {
  165.         int n,max;char num,bn;
  166.         SqList L;STD s;
  167.         while(1)
  168.         {
  169.                 n = menu();                //显示主菜单
  170.                         switch(n)
  171.                 {
  172.                         case 1:  inieSqList(L,max);
  173.                                         printf("按任意键继续!\n");
  174.                                         getch();
  175.                                         break;
  176.                         case 2: printf("请输入要插入的图书编号和图书名,用空格隔开:\n");
  177.                                         scanf("%s %s",s.num,s.bn);
  178.                                         insertSqList(&L,L.length+1,s);
  179.                                         printf("按任意键继续!\n");
  180.                                         getch();
  181.                                         break;
  182.                         case 3: printf("图书数据如下:\n");
  183.                                         dispSqList(L);
  184.                                         printf("按任意键继续!\n");
  185.                                         getch();
  186.                                         break;
  187.                         case 4: printf("请输入要删除的图书位置:\n");
  188.                                         scanf("%d",n) ;
  189.                                         deleteSqList(&L ,n, &s);
  190.                                         printf("删除的数据为:%s %s\n",s.bn,s.num);
  191.                                         printf("按任意键继续!\n");
  192.                                         getch();
  193.                                         break;
  194.                         case 5: printf("请输入要查找的图书编号:\n");
  195.                                         scanf("%s",num);
  196.                                         n = locationSqList2(L,num);
  197.                                         if(n)
  198.                                         printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
  199.                                         else printf("该编号不存在!\n");
  200.                                         printf("按任意键继续!\n");
  201.                                         getch();
  202.                                         break;
  203.                         case 6: printf("请输入要查找的书名:\n");
  204.                                         scanf("%s",bn);
  205.                                         n = locationSqList1(L,bn);
  206.                                         if(n)
  207.                                         printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
  208.                                         else printf("该编号不存在!\n");
  209.                                         printf("按任意键继续!\n");
  210.                                         getch();
  211.                                         break;
  212.                         case 7: printf("表长为: ");
  213.                                         ListLength(L);
  214.                                         printf("按任意键继续!\n");
  215.                                         getch();
  216.                                         break;
  217.                         case 8: printf("请输入要修改的图书名和图书编号,用空格隔开:\n");
  218.                                         scanf("%s %s",s.bn,s.num);
  219.                                         n = locationSqList1(L,s.bn);
  220.                                         updateSqList(L,n,s);
  221.                                     printf("按任意键继续!\n");
  222.                                         getch();
  223.                                         break;
  224.                         case 0: exit(0);
  225.                 }
  226.         }
  227. }
复制代码
最佳答案
2021-3-17 13:44:27
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<conio.h>
  5. typedef struct
  6. {
  7.         char bn[256]  ; //图书名字
  8.         char num[256] ; //图书编号
  9.       
  10. } STD;

  11. typedef struct
  12. {
  13.         STD *data;  //指向STD类型的指针变量
  14.         int listSize;
  15.         int length;
  16.   } SqList;
  17.   int inieSqList(SqList *L,int max)   //初始化
  18. {
  19.         L->data = (STD *)malloc(max *sizeof(STD));
  20.         if(L->data == NULL)
  21.         {
  22.                 printf("空间申请失败!\n");
  23.                 return 0;
  24.         }
  25.         L->listSize = max;
  26.         L->length = 0;
  27.         return 1;
  28. }
  29. int insertSqList(SqList *L, int i,STD x)        //插入操作
  30. {
  31.         int k;
  32.         if(i < 1||i > L->length+1)
  33.         {
  34.                 printf("插入位置异常!\n");
  35.                 return 0;
  36.         }
  37.         if(L->length >= L->listSize)
  38.         {
  39.                 printf("容量不够!\n");
  40.                 return 0;
  41.         }
  42.         for(k = L->length;k >= i;k--)  //向后移动一组数据
  43.         {
  44.                 L->data[k] = L->data[k - 1];
  45.          }
  46.          L->data[i -1] = x;                                //将待插入数据放入指定位置
  47.          L->length = L->length + 1;         //长度加1
  48.          return 1;
  49. }

  50. int deleteSqList(SqList *L ,int i, STD *x) //删除操作
  51. {
  52.         int k;
  53.         if (L->length == 0)
  54.         {
  55.                 printf("没有数据,不能删除!\n");
  56.                 return 0;
  57.          }
  58.          if (i <= 0 || i >L->length)
  59.          {
  60.                  printf("位置异常!\n");
  61.                  return 0;
  62.          }
  63.          *x = L->data[i - 1];
  64.          for(k = i;k < L->length; k++)        //向前移动一组数据
  65.          {
  66.                  L->data[k - 1] = L->data[k];
  67.          }
  68.          L->length = L->length - 1;
  69.          return 1;
  70. }

  71. int locationSqList1(SqList L,char *x)  //按书名查找
  72. {
  73.         int i;
  74.         if(L.length == 0)
  75.         {
  76.                 printf("没有数据!\n");
  77.                 return 0;
  78.         }
  79.         for(i = 0;i < L.length;i++)
  80.         {
  81.                 if(strcmp(L.data[i].bn,x) == 0)
  82.                 return i + 1;
  83.         }
  84.         return 0;
  85. }
  86. int locationSqList2(SqList L , char * x)  //按书号查找
  87. {
  88.         int i;
  89.         if(L.length == 0)
  90.         {
  91.                 printf("没有数据!\n");
  92.                 return 0;
  93.         }
  94.         for(i = 0;i < L.length;i++)
  95.         {
  96.                 if(strcmp(L.data[i].num,x) == 0)
  97.                 return i + 1;
  98.         }
  99.         return 0;
  100. }

  101. int getSqList(SqList L,int i, STD *x)        //按指定位置查找
  102. {
  103.         if (L.length == 0)
  104.         {
  105.                 printf("没有数据!\n");
  106.                 return 0;
  107.         }
  108.         if (i < 1 || i > L.length)
  109.         {
  110.                 printf("位置不合理!\n");
  111.                 return 0;
  112.         }
  113.         *x = L.data[i - 1];
  114.         return 1;
  115. }

  116. int ListLength(SqList *L)        //求顺序表长度
  117. {
  118.     return (L->length);
  119. }

  120. int updateSqList(SqList L ,int i,STD x)                //修改成员
  121. {
  122.         if(L.length == 0)
  123.         {
  124.                 printf("没有数据,不能更新!\n");
  125.                 return 0;
  126.         }
  127.         if(i<1||i>L.length)
  128.         {
  129.                 printf("位置不合理!\n");
  130.                 return 0;
  131.         }
  132.         L.data[i - 1] = x;
  133.         return 1;
  134. }

  135. int dispSqList(SqList L)                        //输出顺序表
  136. {
  137.         int i;
  138.         if(L.length == 0)
  139.         {
  140.                 printf("没有数据!\n");
  141.                 return 0;
  142.         }
  143.         for(i = 0;i<L.length;i++)
  144.         {
  145.                 printf("%s %s \n",L.data[i].bn,L.data[i].num);
  146.         }
  147.         return 1;
  148. }

  149. int menu()                                                        //菜单功能
  150. {
  151.         char c                                        ;
  152.         system("cls");
  153.         printf("****欢迎使用图书信息管理系统!****\n");
  154.         printf("1.初始化空表        2.插入图书数据\n");
  155.         printf("3.输出数据          4.删除数据\n")    ;
  156.         printf("5.书号查找          6.书名查找\n")    ;
  157.         printf("7.求表长            8.修改数据\n")    ;
  158.         printf("0.退出\n")                            ;
  159.         fflush(stdin)                                 ;
  160.         while((c = getch()) < '0' || c > '8')         ;
  161.         return c - '0'                                ;
  162. }
  163.   
  164. int main(void)
  165. {
  166.         int n,max               ;
  167.         char num[256] , bn[256] ;
  168.         SqList L;STD s          ;
  169.         while(1)
  170.         {
  171.                 n = menu();                //显示主菜单
  172.                         switch(n)
  173.                 {
  174.                         case 1:  inieSqList(& L , max)             ;
  175.                                         printf("按任意键继续!\n") ;
  176.                                         getch();
  177.                                         break;
  178.                         case 2: printf("请输入要插入的图书编号和图书名,用空格隔开:\n");
  179.                                         scanf("%s %s",s.num,s.bn);
  180.                                         insertSqList(&L,L.length+1,s);
  181.                                         printf("按任意键继续!\n");
  182.                                         getch();
  183.                                         break;
  184.                         case 3: printf("图书数据如下:\n");
  185.                                         dispSqList(L);
  186.                                         printf("按任意键继续!\n");
  187.                                         getch();
  188.                                         break;
  189.                         case 4: printf("请输入要删除的图书位置:\n");
  190.                                         scanf("%d",n) ;
  191.                                         deleteSqList(&L ,n, &s);
  192.                                         printf("删除的数据为:%s %s\n",s.bn,s.num);
  193.                                         printf("按任意键继续!\n");
  194.                                         getch();
  195.                                         break;
  196.                         case 5: printf("请输入要查找的图书编号:\n");
  197.                                         scanf("%s",num);
  198.                                         n = locationSqList2(L,num);
  199.                                         if(n)
  200.                                         printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
  201.                                         else printf("该编号不存在!\n");
  202.                                         printf("按任意键继续!\n");
  203.                                         getch();
  204.                                         break;
  205.                         case 6: printf("请输入要查找的书名:\n");
  206.                                         scanf("%s",bn);
  207.                                         n = locationSqList1(L,bn);
  208.                                         if(n)
  209.                                         printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
  210.                                         else printf("该编号不存在!\n");
  211.                                         printf("按任意键继续!\n");
  212.                                         getch();
  213.                                         break;
  214.                         case 7: printf("表长为: ");
  215.                                         ListLength(& L) ;
  216.                                         printf("按任意键继续!\n");
  217.                                         getch();
  218.                                         break;
  219.                         case 8: printf("请输入要修改的图书名和图书编号,用空格隔开:\n");
  220.                                         scanf("%s %s",s.bn,s.num);
  221.                                         n = locationSqList1(L,s.bn);
  222.                                         updateSqList(L,n,s);
  223.                                     printf("按任意键继续!\n");
  224.                                         getch();
  225.                                         break;
  226.                         case 0: exit(0);
  227.                 }
  228.         }
  229. }
复制代码

报错

报错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-3-17 13:44:27 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<conio.h>
  5. typedef struct
  6. {
  7.         char bn[256]  ; //图书名字
  8.         char num[256] ; //图书编号
  9.       
  10. } STD;

  11. typedef struct
  12. {
  13.         STD *data;  //指向STD类型的指针变量
  14.         int listSize;
  15.         int length;
  16.   } SqList;
  17.   int inieSqList(SqList *L,int max)   //初始化
  18. {
  19.         L->data = (STD *)malloc(max *sizeof(STD));
  20.         if(L->data == NULL)
  21.         {
  22.                 printf("空间申请失败!\n");
  23.                 return 0;
  24.         }
  25.         L->listSize = max;
  26.         L->length = 0;
  27.         return 1;
  28. }
  29. int insertSqList(SqList *L, int i,STD x)        //插入操作
  30. {
  31.         int k;
  32.         if(i < 1||i > L->length+1)
  33.         {
  34.                 printf("插入位置异常!\n");
  35.                 return 0;
  36.         }
  37.         if(L->length >= L->listSize)
  38.         {
  39.                 printf("容量不够!\n");
  40.                 return 0;
  41.         }
  42.         for(k = L->length;k >= i;k--)  //向后移动一组数据
  43.         {
  44.                 L->data[k] = L->data[k - 1];
  45.          }
  46.          L->data[i -1] = x;                                //将待插入数据放入指定位置
  47.          L->length = L->length + 1;         //长度加1
  48.          return 1;
  49. }

  50. int deleteSqList(SqList *L ,int i, STD *x) //删除操作
  51. {
  52.         int k;
  53.         if (L->length == 0)
  54.         {
  55.                 printf("没有数据,不能删除!\n");
  56.                 return 0;
  57.          }
  58.          if (i <= 0 || i >L->length)
  59.          {
  60.                  printf("位置异常!\n");
  61.                  return 0;
  62.          }
  63.          *x = L->data[i - 1];
  64.          for(k = i;k < L->length; k++)        //向前移动一组数据
  65.          {
  66.                  L->data[k - 1] = L->data[k];
  67.          }
  68.          L->length = L->length - 1;
  69.          return 1;
  70. }

  71. int locationSqList1(SqList L,char *x)  //按书名查找
  72. {
  73.         int i;
  74.         if(L.length == 0)
  75.         {
  76.                 printf("没有数据!\n");
  77.                 return 0;
  78.         }
  79.         for(i = 0;i < L.length;i++)
  80.         {
  81.                 if(strcmp(L.data[i].bn,x) == 0)
  82.                 return i + 1;
  83.         }
  84.         return 0;
  85. }
  86. int locationSqList2(SqList L , char * x)  //按书号查找
  87. {
  88.         int i;
  89.         if(L.length == 0)
  90.         {
  91.                 printf("没有数据!\n");
  92.                 return 0;
  93.         }
  94.         for(i = 0;i < L.length;i++)
  95.         {
  96.                 if(strcmp(L.data[i].num,x) == 0)
  97.                 return i + 1;
  98.         }
  99.         return 0;
  100. }

  101. int getSqList(SqList L,int i, STD *x)        //按指定位置查找
  102. {
  103.         if (L.length == 0)
  104.         {
  105.                 printf("没有数据!\n");
  106.                 return 0;
  107.         }
  108.         if (i < 1 || i > L.length)
  109.         {
  110.                 printf("位置不合理!\n");
  111.                 return 0;
  112.         }
  113.         *x = L.data[i - 1];
  114.         return 1;
  115. }

  116. int ListLength(SqList *L)        //求顺序表长度
  117. {
  118.     return (L->length);
  119. }

  120. int updateSqList(SqList L ,int i,STD x)                //修改成员
  121. {
  122.         if(L.length == 0)
  123.         {
  124.                 printf("没有数据,不能更新!\n");
  125.                 return 0;
  126.         }
  127.         if(i<1||i>L.length)
  128.         {
  129.                 printf("位置不合理!\n");
  130.                 return 0;
  131.         }
  132.         L.data[i - 1] = x;
  133.         return 1;
  134. }

  135. int dispSqList(SqList L)                        //输出顺序表
  136. {
  137.         int i;
  138.         if(L.length == 0)
  139.         {
  140.                 printf("没有数据!\n");
  141.                 return 0;
  142.         }
  143.         for(i = 0;i<L.length;i++)
  144.         {
  145.                 printf("%s %s \n",L.data[i].bn,L.data[i].num);
  146.         }
  147.         return 1;
  148. }

  149. int menu()                                                        //菜单功能
  150. {
  151.         char c                                        ;
  152.         system("cls");
  153.         printf("****欢迎使用图书信息管理系统!****\n");
  154.         printf("1.初始化空表        2.插入图书数据\n");
  155.         printf("3.输出数据          4.删除数据\n")    ;
  156.         printf("5.书号查找          6.书名查找\n")    ;
  157.         printf("7.求表长            8.修改数据\n")    ;
  158.         printf("0.退出\n")                            ;
  159.         fflush(stdin)                                 ;
  160.         while((c = getch()) < '0' || c > '8')         ;
  161.         return c - '0'                                ;
  162. }
  163.   
  164. int main(void)
  165. {
  166.         int n,max               ;
  167.         char num[256] , bn[256] ;
  168.         SqList L;STD s          ;
  169.         while(1)
  170.         {
  171.                 n = menu();                //显示主菜单
  172.                         switch(n)
  173.                 {
  174.                         case 1:  inieSqList(& L , max)             ;
  175.                                         printf("按任意键继续!\n") ;
  176.                                         getch();
  177.                                         break;
  178.                         case 2: printf("请输入要插入的图书编号和图书名,用空格隔开:\n");
  179.                                         scanf("%s %s",s.num,s.bn);
  180.                                         insertSqList(&L,L.length+1,s);
  181.                                         printf("按任意键继续!\n");
  182.                                         getch();
  183.                                         break;
  184.                         case 3: printf("图书数据如下:\n");
  185.                                         dispSqList(L);
  186.                                         printf("按任意键继续!\n");
  187.                                         getch();
  188.                                         break;
  189.                         case 4: printf("请输入要删除的图书位置:\n");
  190.                                         scanf("%d",n) ;
  191.                                         deleteSqList(&L ,n, &s);
  192.                                         printf("删除的数据为:%s %s\n",s.bn,s.num);
  193.                                         printf("按任意键继续!\n");
  194.                                         getch();
  195.                                         break;
  196.                         case 5: printf("请输入要查找的图书编号:\n");
  197.                                         scanf("%s",num);
  198.                                         n = locationSqList2(L,num);
  199.                                         if(n)
  200.                                         printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
  201.                                         else printf("该编号不存在!\n");
  202.                                         printf("按任意键继续!\n");
  203.                                         getch();
  204.                                         break;
  205.                         case 6: printf("请输入要查找的书名:\n");
  206.                                         scanf("%s",bn);
  207.                                         n = locationSqList1(L,bn);
  208.                                         if(n)
  209.                                         printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
  210.                                         else printf("该编号不存在!\n");
  211.                                         printf("按任意键继续!\n");
  212.                                         getch();
  213.                                         break;
  214.                         case 7: printf("表长为: ");
  215.                                         ListLength(& L) ;
  216.                                         printf("按任意键继续!\n");
  217.                                         getch();
  218.                                         break;
  219.                         case 8: printf("请输入要修改的图书名和图书编号,用空格隔开:\n");
  220.                                         scanf("%s %s",s.bn,s.num);
  221.                                         n = locationSqList1(L,s.bn);
  222.                                         updateSqList(L,n,s);
  223.                                     printf("按任意键继续!\n");
  224.                                         getch();
  225.                                         break;
  226.                         case 0: exit(0);
  227.                 }
  228.         }
  229. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-3-17 14:50:25 | 显示全部楼层
前排围观至尊会员
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-4 13:54:24 From FishC Mobile | 显示全部楼层
60币...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 23:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表