0

I'm learning to get user input with C. The code is pretty simple.

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

int main()
{
    char name[25];
    int age;
    char grade;
    double GPA;

    printf("Please enter your name:");
    scanf("%s", name);
    printf("Please enter your age:");
    scanf("%d", &age);
    printf("Please enter a grade:");
    scanf("%c", &grade);
    printf("Please enter your GPA:");
    scanf("%lf", &GPA);

    printf("User Data:\n Name: %s \n Age: %d \n grade: %c GPA: %f \n", name, age, grade, GPA);
}

When this runs, it skips the request to input grade and moves on to the next line (enter GPA)

However, when I move request for grade to top of the request queue, it works just fine.

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

int main()
{
    char name[25];
    int age;
    char grade;
    double GPA;

    printf("Please enter a grade:");
    scanf("%c", &grade);
    printf("Please enter your name:");
    scanf("%s", name);
    printf("Please enter your age:");
    scanf("%d", &age);
    printf("Please enter your GPA:");
    scanf("%lf", &GPA);

    printf("User Data:\n Name: %s \n Age: %d \n grade: %c GPA: %f \n", name, age, grade, GPA);
}

Images of the results in terminal

result when code is run with request for grade in intended position

result when code is run with request for grade at the top of request queue

Any idea why this is happening?

ps. I have tried place request for grade in every other position on the request queue with the same issue.

I really hope my question is clear enough.

0 Answers0