鱼C论坛

 找回密码
 立即注册
查看: 2785|回复: 1

[已解决]求教:链表这一章节,,当输入一行,回车就再输入不上,怎么回事

[复制链接]
发表于 2021-4-20 20:33:00 | 显示全部楼层 |阅读模式
1鱼币
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct Student)

typedef struct Student
{
        long num;
        float score;
        struct Student* next;
}Stu;
int n;
Stu* creat()
{
        Stu* head;
        Stu* p1, * p2;
        n = 0;
        p1 = p2 = (struct Student*)malloc(LEN);
        scanf("%ld,%f", &p1->num, &p1->score);
        head = NULL;
        while (p1->num != 0)
        {
                n = n + 1;
                if (n == 1)
                {
                        head = p1;
                }
                else
                {
                        p2->next = p1;
                }

                p1 = (Stu*)malloc(LEN);
                scanf("%ld,%f", &p1->next, &p1->score);

       
        }
        p2->next = NULL;
        return head;
}
void print(struct Student* head)
{
        struct Student* p;
        printf("\nNow,These %d records are:\n", n);
        p = head;
        if (head != NULL)
        {
                do
                {
                        printf("%ld %5.1f\n", p->num, p->score);
                        p = p->next;
                } while (p != NULL);
        }
}
int main()
{
        Stu* head;
        head = creat();
        print(head);
        return 0;
}
最佳答案
2021-4-20 20:33:01
scanf("%ld,%f", &p1->num, &p1->score);

首先我推荐你不要一次输入多个变量,如果实在想写的简单点
scanf("%ld%*c%f%*c", &p1->num, &p1->score);

%*c 我也是从别人那学来的,我觉得还挺好用
功能就是过滤一个字符  这样你两个变量中间就可以随便输什么字符用来隔开两个变量
然后结尾跟上一个 %*c
刚刚说了 %*c 是过滤字符,结尾跟上一个 %*c 就是为了过滤掉你按下的回车
也就是 \n ,如果不过滤的话  这个\n 会带到下一次输入

最佳答案

查看完整内容

首先我推荐你不要一次输入多个变量,如果实在想写的简单点 %*c 我也是从别人那学来的,我觉得还挺好用 功能就是过滤一个字符 这样你两个变量中间就可以随便输什么字符用来隔开两个变量 然后结尾跟上一个 %*c 刚刚说了 %*c 是过滤字符,结尾跟上一个 %*c 就是为了过滤掉你按下的回车 也就是 \n ,如果不过滤的话 这个\n 会带到下一次输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-20 20:33:01 | 显示全部楼层    本楼为最佳答案   
scanf("%ld,%f", &p1->num, &p1->score);

首先我推荐你不要一次输入多个变量,如果实在想写的简单点
scanf("%ld%*c%f%*c", &p1->num, &p1->score);

%*c 我也是从别人那学来的,我觉得还挺好用
功能就是过滤一个字符  这样你两个变量中间就可以随便输什么字符用来隔开两个变量
然后结尾跟上一个 %*c
刚刚说了 %*c 是过滤字符,结尾跟上一个 %*c 就是为了过滤掉你按下的回车
也就是 \n ,如果不过滤的话  这个\n 会带到下一次输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 15:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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