Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
377 views
in Technique[技术] by (71.8m points)

c - Problems with scanf

#include <stdio.h>

int main()
{

    char C, B;
    int x;



    printf("What comes after G
");
    scanf("%c", &C);

    printf("What comes after O
");
    scanf("%c", &B);

    printf("What is your age?
");
    scanf("%d", &x);

    printf("You said %c comes after G, %c after T and you're %d years old? Right?", C, B, x);

    return 0;
}

The problem is whenever you run the code it skips the second question "What comes after O" and then asks "What is your age?"

The only way I could avoid the program skip the 2nd question was by adding a space to the code

printf("What comes after O
");
    scanf(" %c", &B);

You can see the space between " and %c

Can you please explain this to me?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to eat up the white space (i.e. new line) - as per the manual page http://linux.die.net/man/3/scanf


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...