大佬们,我这getchar()咋没有让我输入字符。直接跳过了呢?

 

 

#include<stdio.h>
int main() {
	float money=0, due=0;
	char ontime;
	printf("How much do you owe?");
	scanf_s("%f", &money);
	printf("On time?");
	ontime = getchar();
	if (ontime == 'y') {
		due = money;
	}
	else if (ontime == 'n') {
		due = 1.1 * money;
	}
	printf("You shall pay:%f", due);
}

 

getchar 可能是被上面输入时的回车影响了,上面再加个getchar();吸收掉回车

 

printf("On time?");

getchar();

ontime = getchar();

,因为你scanf会把回车给忽略掉,你需要在scanf_s到printf("On time?");之间加个getchar();就可以了

是输入缓冲区搞得问题,当你输入第一个scanf_s的时候,还会残留一个回车符在输入缓冲区中,然后到下面getchar();时,会优先冲输入缓冲区中读取字符,所以当他读取到'\n'时,就不会停下来等待用户输入了。解决办法就是在getcher()前加上下面代码,清空输入缓冲区的字符,即可!

char c;    // 清空输入缓冲区
while((c = getcher()) != '\n');

 

#include<stdio.h>
int main() {
	float money=0, due=0;
	char ontime;
	printf("How much do you owe?");
	scanf_s("%f", &money);
	printf("On time?");

	char c;    // 清空输入缓冲区
	while ((c = getchar()) != '\n') {
		ontime = getchar();
	}
	
	if (ontime == 'y') {
		due = money;
	}
	else if (ontime == 'n') {
		due = 1.1 * money;
	}
	printf("You shall pay:%1f", due);
}