George_hacker 2021-08-16 14:07 采纳率: 50%
浏览 40
已结题

已定义结构体,输入的时候到字符型sex的时候就不能输入了,字符显示不出来,过一会程序就自动结束,觉得是输入函数和下面的那个循环的问题,但找不到。

struct student* p1, * p2, * head;   //定义结构体变量

head=p1 = p2 = (struct student*)malloc(sizeof(struct student)); //开辟存储空间

scanf_s("%ld%s%c%d", &p1->num, p1->name, &p1->sex, &p1->age);   //输入相关数据

while (p1->num != 0)        // 如果输入的学号num为0则停止输入,表明输入结束
{
    i = i + 1;
    if (i == 1)
        head = p1;
    else
        p2->next = p1;
    p2 = p1;
    p1 = (struct student*)malloc(sizeof(struct student));   //强制类型转换(struct student*)
    scanf_s("%ld%s%c%d", &p1->num, p1->name, &p1->sex, &p1->age);
}   /*23至35行有问题,程序无法执行下去*/

p2->next = NULL;
free(p1);  //释放多余的存储空间

struct student* p3, * p4;

if (head != NULL)
{
    p3 = head;
    for (int j = 1; j <= i; j++)
    {
        printf("%ld,%s,%c,%d\n", p3->num, p3->name, p3->sex, p3->age);
        p3 = p3->next;
    }  //打印选择之前的链表
}
else
    printf("The linklist is not exist\n");


int age;

scanf_s("%d", &age);  //输入要删除的元素

seek(age,head);   //对输入的元素进行选择

if (head != NULL)
{
    p4 = head;
    while (p4 != NULL)
    {
        printf("%ld,%s,%c,%d\n", p4->num, p4->name, p4->sex, p4->age);
        p4 = p4->next;
    }
}  //打印选择过后的链表



    if (pt != NULL)
    {
        if (pt->age == age)
        {
            temp = pt;
            pt = pt->next;
            free(temp);
            return;
        }  //先判断头结点
        else
        {
            for (n = 2; n <= i; i++)
            {
                if (pt->next->age != age)
                    pt = pt->next;
                else
                {
                    temp = pt->next;
                    pt->next = pt->next->next;
                    free(temp);
                    return;
                }
            }
        }
    }
    else
        printf("error\n");

} //定义选择函数seek

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-08-16 14:51
    关注

    两句输入scanf_s()语句修改下,供参考:

    scanf_s("%ld%s%c%d", &p1->num, p1->name, 16, &p1->sex,1, &p1->age); 
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月25日
  • 已采纳回答 8月17日
  • 创建了问题 8月16日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题