鱼C论坛

 找回密码
 立即注册
查看: 2172|回复: 2

跪求大佬指导!关于链表

[复制链接]
发表于 2020-11-30 21:09:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. #define MAX 1024

  5. void getlist(struct Dorm *dorm);
  6. void printlist(struct Dorm *firstlist);
  7. void freelist(struct Dorm *firstlist);
  8. void addDorm(struct Dorm **firstlist);
  9. struct Dorm *serachlist(struct Dorm *firstlist,char *target);
  10. void printfserachlist(struct Dorm *firstlist);

  11. typedef struct Dorm
  12. {
  13.     char name[MAX];
  14.     int age;
  15.     struct Dorm *next;
  16. }Dorm;

  17. void getlist(Dorm *dorm)
  18. {
  19.     printf("请输入名字:");
  20.     scanf("%s",dorm->name);
  21.         printf("请输入年龄:");
  22.     scanf("%d",dorm->age);   
  23. }

  24. void printlist(Dorm *firstlist)
  25. {
  26.     Dorm *dorm;
  27.     int count = 1;
  28.    
  29.     dorm = firstlist;
  30.     while(dorm != NULL)
  31.     {
  32.         printf("\n名字为%s\n",dorm->name);
  33.         printf("\n年龄为%d\n",dorm->age);
  34.         dorm = dorm->next;
  35.         count ++;
  36.     }

  37. }

  38. void freelist(Dorm *firstlist)
  39. {
  40.     while(firstlist != NULL)
  41.     {
  42.         firstlist = firstlist->next;
  43.         free(firstlist);
  44.         
  45.     }
  46. }

  47. Dorm *searchlist(Dorm *firstlist,char *target)
  48. {
  49.         Dorm *dorm;
  50.         dorm = firstlist;
  51.         while(dorm != NULL)
  52.         {
  53.                 if(!strcmp(dorm->name,target))
  54.                 {
  55.                         break;
  56.                 }
  57.                 dorm = dorm->next;
  58.         }
  59.         return dorm;
  60. }

  61. void printfsearchlist(Dorm *firstlist)
  62. {
  63.         printf("————查找完毕————");
  64.         printf(" 姓名:%s",firstlist->name);
  65.         printf(" 年龄:%d",firstlist->age);
  66. }

  67. void addDorm(Dorm **firstlist)
  68. {
  69.     Dorm *dorm,*temp;
  70.    
  71.     dorm = (Dorm *)malloc(sizeof(Dorm));
  72.     if(dorm == NULL)
  73.     {
  74.         printf("内存分配失败!\n");
  75.         exit(1);
  76.     }
  77.    
  78.     getlist(dorm);
  79.    
  80.     if(*firstlist != NULL)
  81.     {
  82.         temp = *firstlist;
  83.         *firstlist = dorm;
  84.         dorm->next = temp;
  85.     }
  86.    
  87.     else
  88.     {
  89.         *firstlist = dorm;
  90.         dorm->next = NULL;
  91.     }
  92. }

  93. void list_file()
  94. {
  95.         Dorm *dorm;
  96.         FILE *fp;
  97.        
  98.         if((fp = fopen("C:\\Users\\帅气逼人的阿熊\\Desktop\\C语言\\文件\\成绩.txt","w")) == NULL)
  99.         {
  100.                 printf("打开文件失败!");
  101.                 exit(EXIT_FAILURE);
  102.         }
  103.         else
  104.         {
  105.                 printf("保存文件成功!");
  106.         }
  107.         while(dorm != NULL)
  108.         {
  109.                 fprintf(fp,"%s",(&dorm->age,1,sizeof(Dorm)));
  110.                 dorm = dorm->next;
  111.         }
  112.        
  113.         fclose(fp);
  114. }

  115. int main(void)
  116. {
  117.     Dorm *firstlist = NULL;
  118.     Dorm *result;
  119.     char input[MAX];
  120.     char list[MAX];
  121.     int ch;
  122.     FILE *fp;
  123.    
  124.     while(1)
  125.     {
  126.             system("color 3");
  127.         printf("\n\r\r#######学生考试信息系统#######\r\r\n\
  128.                         \r\r########1录入学生信息#########\r\r\n\
  129.                                 \r\r#####2打印已录入学生信息######\r\r\n\
  130.                             \r\r#####3查询已录入学生信息######\r\r\n\
  131.                                 \r\r#####4删除已录入学生信息######\r\r\n");
  132.                                                
  133.             scanf("%d",&ch);
  134.             if(ch == 1)
  135.             {
  136.                 addDorm(&firstlist);
  137.                 system("pause");
  138.                 system("cls");
  139.         }
  140.             else if(ch == 2)
  141.         {
  142.                        printlist(firstlist);
  143.                        system("pause");
  144.                        system("cls");
  145.         }
  146.             else if(ch == 3)
  147.         {
  148.                        printf("\n请输入需要查询的人的名字:");
  149.                            scanf("%s",&input);
  150.                            result = searchlist(firstlist,input);
  151.                            if(result == NULL)
  152.                            {
  153.                             printf("\n未能找到数据...");
  154.                             system("pause");
  155.                             system("cls");
  156.                         }
  157.                         else
  158.                         {
  159.                                 do
  160.                                 {
  161.                                         printf("\n已找到数据...\n");
  162.                                         printfsearchlist(result);
  163.                                 }while((result = searchlist(result->next,input)) != NULL);
  164.                                 system("cls");
  165.                         }
  166.                 }
  167.                 else if(ch == 5)
  168.                 {
  169.                         list_file();
  170.                         system("pause");
  171.                     system("cls");
  172.                 }
  173.                 else
  174.                 {
  175.                         printf("请输入正确的序号!");
  176.                 }
  177.         }
  178.    

  179.     freelist(firstlist);
  180.    
  181.     return 0;
  182. }
复制代码


问一下大佬们,为什么程序写入不了!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 22:15:32 | 显示全部楼层
26行
  1. scanf("%d",&(dorm->age));
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-1 15:55:25 | 显示全部楼层

谢谢了。我是憨批。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-9 02:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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