欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

清理输入和输出缓冲区 stdin&stdout

程序员文章站 2024-02-27 13:06:39
...

一、VC中

 fflush(stdin),用于清空输入缓冲区,示例程序如下:

#include <stdio.h>
int main() {
	int i_var[10] = { 0 };
	//请输入三个元素
	int i = 0;
	for (; i < 3; i++) {
		scanf("%d", &i_var[i]);
	}
	//rewind(stdin);
	//fflush(stdin);
	int num;
	printf("请输入序号num,然后输出序号对应的数值\n");
	scanf("%d",&num);
	printf("num=%d\t对应的数值为%d\n", num, i_var[num - 1]);
	return 0;
}

运行结果:

清理输入和输出缓冲区 stdin&stdout

原因:当我不仅仅输入1,2,3,而是多输入一个4的时候,程序就不再让我输入一个序号而是直接输出序号和元素,产生这个结果的原因就是输入缓冲区未清空
我们的电脑的内存空间里有这么一部分叫作做输入缓冲区,当我们在键入数字或字符等元素时,这些元素会先存到输入缓冲区里,并不是直接放在内存上的。与输入缓冲区对应的还有输出缓冲区,统称为缓冲区,这里就不详细介绍,可自行百度。简单来说,缓冲区的作用是节省计算机的操作时间。

VC中,直接在 下一个赋值变量前面,添加 fflush(stdin);

既:

#include <stdio.h>
int main() {
	int i_var[10] = { 0 };
	//请输入三个元素
	int i = 0;
	for (; i < 3; i++) {
		scanf("%d", &i_var[i]);
	}
	fflush(stdin); //在此处添加!
	int num;
	printf("请输入序号num,然后输出序号对应的数值\n");
	scanf("%d",&num);
	printf("num=%d\t对应的数值为%d\n", num, i_var[num - 1]);
	return 0;
}

参考:对fflush(stdin)功能以及实际应用的个人体会,对初学者应该挺有用

二、VS中
 

 添加:rewind(stdin);

#include <stdio.h>
int main() {
	int i_var[10] = { 0 };
	//请输入三个元素
	int i = 0;
	for (; i < 3; i++) {
		scanf("%d", &i_var[i]);
	}
	rewind(stdin); //在此处添加!
	int num;
	printf("请输入序号num,然后输出序号对应的数值\n");
	scanf("%d",&num);
	printf("num=%d\t对应的数值为%d\n", num, i_var[num - 1]);
	return 0;
}

参考:解决关于VS2017无法使用flush(stdin)的问题

三、万能清空缓存区

C语言之清空缓存区 

相关标签: C知识点