微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“ fgets”读取空格而不是读取输入的字符串为什么?

如何解决“ fgets”读取空格而不是读取输入的字符串为什么?

当我运行以下代码时,可以输入名称和名册,但无法读取课程名称,它直接传递给标记。我了解这个问题。 fgets函数读取一个空间,以便传递给标记,但是要读取的空间在哪里。我通过编写scanf(“ \ n”)解决了这个问题,这不是我想要执行的方式。您知道为什么fgets读取空间吗?

#include <stdio.h>

#define SIZE 50

struct student {
    char name[SIZE];
    int roll;
    char courseName[SIZE];
    float marks;
} stu1;

//struct student stu1;

int main() {
    printf("Please Enter the student information:\n\n");
    
    printf("Enter name: ");
    fgets(stu1.name,SIZE,stdin);
    printf("Enter roll number: ");
    scanf("%d",&stu1.roll);
    printf("Enter the course name: ");
    //scanf("\n");
    fgets(stu1.courseName,stdin);
    printf("Enter marks: ");
    scanf("%f",&stu1.marks);

    printf("\nThe information you you entered:\n\n");
    printf("Name: %s",stu1.name);
    printf("Roll number: %d\n",stu1.roll);
    printf("Course name: %s",stu1.courseName);
    printf("Marks: %.1f",stu1.marks);

    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。