焦糖橙子 发表于 2022-1-4 09:03:03

结构体指针函数

本帖最后由 焦糖橙子 于 2022-1-4 09:04 编辑

ld returned 1 exit status
程序显示报错,这是什么意思?

代码放一楼了

焦糖橙子 发表于 2022-1-4 09:04:10

#include <stdio.h>
#include <stdlib.h>

typedef struct student {
        int num;
        int age;
        int gender;
        char natuve_place;
        char email;
        char QQ;
        char name;
        char academy;
        int grade;
        struct student *next;
        struct student *prior;
} Student;

void DeletData(Student *,int);//删除数据
void CrateData(Student *);//增加数据
Student* ChcekData(Student *,int);//查看数据
void ReviseData(Student *,int);//修改数据
void PrintfData(Student *,int);//打印数据

int main() {
        int input, num;
        Student *pStu,*PStu;
        pStu=(Student*)malloc(sizeof(Student));
        pStu->next=NULL;
        pStu->prior=NULL;
        PStu=(Student*)malloc(sizeof(Student));
        while(input) {
                printf("****************************************\n");
                printf("1.删除学生信息\n");
                printf("2.新增学生信息\n");
                printf("3.查询学生信息\n");
                printf("4.修改学生信息\n");
                printf("5.打印学生信息\n");
                printf("0.结束程序\n");
                printf("请输入操作指令:");
                scanf("%d ",&input);
                printf("请输入学生学号:");
                scanf("%d",&num);
                switch(input) {
                        case 1:
                                DeletData(pStu,num);
                                break;
                        case 2:
                                CrateData(pStu);
                                break;
                        case 3:
                                ChcekData(pStu,num);
                                break;
                        case 4:
                                ReviseData(pStu,num);
                                break;
                        case 5:
                                PrintfData(pStu,num);
                                break;
                        case 0:
                                exit(0);
                        default:
                                printf("请输入正确的数字!\n");
                                break;
                }
        }

        return 0;
}

void DeletData(Student *pStu,int num) {

        Student *temp=(Student*)malloc(sizeof(Student));
        temp=ChcekData(pStu,num);
        temp->prior->next=temp->next;
        temp->next->prior=temp->prior;

}

Student* ChcekData(Student *p,int num) {
        while(p) {

                if(p->num==num)
                        return p;
                else
                        p=p->next;
        }
        printf("查无此人\n");
}

void CrateData(Student *pStu) { //pStu是头指针

        Student *n_student;
        n_student=(Student*)malloc(sizeof(Student));

        printf("请输入学生的姓名:");
        scanf("%s",&n_student->name);
        printf("\n请输入学生的学号:");
        scanf("%d",&n_student->num);
        printf("\n请输入学生的年龄:");
        scanf("%d",&n_student->age);
        printf("\n请输入学生的性别(1表示男/2表示女):");
        scanf("%d",&n_student->grade);
        printf("\n请输入学生的籍贯:");
        scanf("%s",&n_student->natuve_place);
        printf("\n请输入学生的邮箱:");
        scanf("%s",&n_student->email);
        printf("\n请输入学生的QQ:");
        scanf("%s",&n_student->QQ);
        printf("\n请输入学生的学院:");
        scanf("%s",&n_student->academy);
        printf("\n请输入学生的年级:");
        scanf("%d",&n_student->grade);
        n_student->prior=pStu->prior;
        pStu->prior->next=n_student;
        n_student->next=pStu;
        pStu->prior= n_student;

        printf("\n成创建!\n");

}

void ReviseData(Student *pStu,int num) {
        while(pStu->num==num);

        printf("请输入学生的姓名:");
        scanf("%s",&pStu->name);
        printf("\n请输入学生的学号:");
        scanf("%d",&pStu->num);
        printf("\n请输入学生的年龄:");
        scanf("%d",&pStu->age);
        printf("\n请输入学生的性别(1表示男/2表示女):");
        scanf("%d",&pStu->grade);
        printf("\n请输入学生的籍贯:");
        scanf("%s",&pStu->natuve_place);
        printf("\n请输入学生的邮箱:");
        scanf("%s",&pStu->email);
        printf("\n请输入学生的QQ:");
        scanf("%s",&pStu->QQ);
        printf("\n请输入学生的学院:");
        scanf("%s",&pStu->academy);
        printf("\n请输入学生的年级:");
        scanf("%d",&pStu->grade);

}

大马强 发表于 2022-1-4 09:15:48

一、 PrintfData 没写,导致无发现引用报错
二、while循环的条件是 iput,我感觉是有问题的
#include <stdio.h>
#include <stdlib.h>

typedef struct student {
      int num;
      int age;
      int gender;
      char natuve_place;
      char email;
      char QQ;
      char name;
      char academy;
      int grade;
      struct student *next;
      struct student *prior;
} Student;

void DeletData(Student *,int);//删除数据
void CrateData(Student *);//增加数据
Student* ChcekData(Student *,int);//查看数据
void ReviseData(Student *,int);//修改数据
void PrintfData(Student *,int);//打印数据

int main() {
      int input, num;
      Student *pStu,*PStu;
      pStu=(Student*)malloc(sizeof(Student));
      pStu->next=NULL;
      pStu->prior=NULL;
      PStu=(Student*)malloc(sizeof(Student));
      while(1) {    // 原来是input 但是 input并无定义,
                printf("****************************************\n");
                printf("1.删除学生信息\n");
                printf("2.新增学生信息\n");
                printf("3.查询学生信息\n");
                printf("4.修改学生信息\n");
                printf("5.打印学生信息\n");
                printf("0.结束程序\n");
                printf("请输入操作指令:");
                scanf("%d ",&input);
                printf("请输入学生学号:");
                scanf("%d",&num);
                switch(input) {
                        case 1:
                              DeletData(pStu,num);
                              break;
                        case 2:
                              CrateData(pStu);
                              break;
                        case 3:
                              ChcekData(pStu,num);
                              break;
                        case 4:
                              ReviseData(pStu,num);
                              break;
                        case 5:
//                              PrintfData(pStu,num);这个函数没有写
                              break;
                        case 0:
                              exit(0);
                        default:
                              printf("请输入正确的数字!\n");
                              break;
                }
      }

      return 0;
}

void DeletData(Student *pStu,int num) {

      Student *temp=(Student*)malloc(sizeof(Student));
      temp=ChcekData(pStu,num);
      temp->prior->next=temp->next;
      temp->next->prior=temp->prior;

}

Student* ChcekData(Student *p,int num) {
      while(p) {

                if(p->num==num)
                        return p;
                else
                        p=p->next;
      }
      printf("查无此人\n");
}

void CrateData(Student *pStu) { //pStu是头指针

      Student *n_student;
      n_student=(Student*)malloc(sizeof(Student));

      printf("请输入学生的姓名:");
      scanf("%s",&n_student->name);
      printf("\n请输入学生的学号:");
      scanf("%d",&n_student->num);
      printf("\n请输入学生的年龄:");
      scanf("%d",&n_student->age);
      printf("\n请输入学生的性别(1表示男/2表示女):");
      scanf("%d",&n_student->grade);
      printf("\n请输入学生的籍贯:");
      scanf("%s",&n_student->natuve_place);
      printf("\n请输入学生的邮箱:");
      scanf("%s",&n_student->email);
      printf("\n请输入学生的QQ:");
      scanf("%s",&n_student->QQ);
      printf("\n请输入学生的学院:");
      scanf("%s",&n_student->academy);
      printf("\n请输入学生的年级:");
      scanf("%d",&n_student->grade);
      n_student->prior=pStu->prior;
      pStu->prior->next=n_student;
      n_student->next=pStu;
      pStu->prior= n_student;

      printf("\n成创建!\n");

}

void ReviseData(Student *pStu,int num) {
      while(pStu->num==num);

      printf("请输入学生的姓名:");
      scanf("%s",&pStu->name);
      printf("\n请输入学生的学号:");
      scanf("%d",&pStu->num);
      printf("\n请输入学生的年龄:");
      scanf("%d",&pStu->age);
      printf("\n请输入学生的性别(1表示男/2表示女):");
      scanf("%d",&pStu->grade);
      printf("\n请输入学生的籍贯:");
      scanf("%s",&pStu->natuve_place);
      printf("\n请输入学生的邮箱:");
      scanf("%s",&pStu->email);
      printf("\n请输入学生的QQ:");
      scanf("%s",&pStu->QQ);
      printf("\n请输入学生的学院:");
      scanf("%s",&pStu->academy);
      printf("\n请输入学生的年级:");
      scanf("%d",&pStu->grade);

}

大马强 发表于 2022-1-4 09:16:38

大马强 发表于 2022-1-4 09:15
一、 PrintfData 没写,导致无发现引用报错
二、while循环的条件是 iput,我感觉是有问题的

收PrintfData函数没写,只写了声明
页: [1]
查看完整版本: 结构体指针函数