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 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探