int price;
char v;
scanf("%d",&price); //第一次输入
printf("vip? [y/n]");
scanf("%c",&v); //第二输入
C语言scanf输入时缓冲区问题
scanf函数是标准输入流(从键盘接收数据),接收的数据放入输入缓冲区中,其中就包括在键盘输入的空格、回车这类字符,当你用%d接收时是不会影响的,但是用%c就会产生错误,这是因为在"%c"输入时,空格和转义字符均作为有效字符会被%c接收。
解决方法:在输入字符前加 :
getchar();
getchar的作用是读取一个字符,也是输入函数,所以和scanf读取数据的过程一样,都是从缓存区中获取数据。为了不跳过第二个scanf,我们就可以在接收第二个数之前清空缓冲区,用getchar将缓存区的\n取走.
如下:
int price;
char v;
scanf("%d",&price); //第一次输入
printf("vip? [y/n]");
getchar();
scanf("%c",&v); //第二输入