在C语言编程中什么时候需要用fflush(stdin)?

作者&投稿:辕蔡 (若有异议请与网页底部的电邮联系)
在C语言编程中什么时候需要用fflush(stdin)?~

fflush函数刷新一个流,可以用来防止内存地址已经占满,当把这个流指向用户标准输入(stdin)时,可以清除目前缓冲区中的内容,输入回车也会被清楚掉,例如,在scanf()之后使用fflush(stdin)是当输入缓冲区(内存)满了的时候,自动清除输入流缓冲区中所有数据,其实现在内存这么大,每次输入的数据只有几个字节,是几乎用不上的,多用上的地方是在嵌入式开发上面,因为每个固化芯片上一般只有几十K的空间,所以空间显得非常重要,此时就要用上了

1、fflush(stdin)是清空输入缓冲区的意思。stdin就是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入。 一般就是指键盘输入到缓冲区里的东西。
2、在清除文件缓冲区时使用,文件以写方式打开时将缓冲区内容写入文件。
例:
#include
#include
#include
#include
void flush(FILE *stream);
int main(void)
{
FILE *stream;
char msg[] = "This is a test";
/* create a file */
stream = fopen("DUMMY.FIL", "w");
/* write some data to the file */
fwrite(msg, strlen(msg), 1, stream);
clrscr();
printf("Press any key to flush DUMMY.FIL:");
getch();
/* flush the data to DUMMY.FIL without closing it */
flush(stream);
printf("
File was flushed, Press any key to quit:");
getch();
return 0;
}
void flush(FILE *stream)
{
int duphandle;
/* flush the stream's internal buffer */
fflush(stream);
/* make a duplicate file handle */
duphandle = dup(fileno(stream));
/* close the duplicate handle to flush the DOS buffer */
close(duphandle);
}

扩展资料
使用fflush的注意事项
1、MSDN 文档里也清楚地写着:fflush on input stream is an extension to the C standard (fflush 操作输入流是对C标准的扩充)。以下是 C99 对 fflush 函数的定义:int fflush(FILE *stream);
2、如果stream指向输出流或者更新流(update stream),并且这个更新流最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream指向的文件(如标准输出文件stdout)。
3、fflush函数的行为是不确定的。fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,flush函数会给那些流打上错误标记,并且返回EOF,否则返回0。
4、如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用 fflush(stdin) 是不正确的。
参考资料来源:百度百科—fflush(stdin)

接受输入之前 一般scanf之前 其他的诸如getchar之类的但凡是需要接受输入的函数使用前最好使用这个函数 当然 这个函数不是标准函数库里的函数 可以自己写个代替他 while(getch()!='\0');

一般在输入之后,比如scanf()之后.因为回车符号会留在缓冲区中,所以需要fflush(stdin)来清除回车及其他无用符号,清除缓冲区,以免第二次scanf()时,把之前残留的无用符号输入变量中.


c语言编程时出现错误,是什么原因呢?求助
F:\\新建文件夹\\main.c syntax error before string constant 字符串常量前的语法错误 F:\\新建文件夹\\main.c [Warning] date definition has no type or storage class 警告:数据定义没有类型 F:\\新建文件夹\\Makefile.win [Build Error][main.o]Error 1 构建错误,main中出现一个错误。贴个代码...

我在用C语言编程时,编译后总出现Error:spawning C1.exe的错误,看不懂...
D:\/Program Files\/Microsoft Visual Studio\/VC98\/BIN D:\/Program Files\/Microsoft Visual Studio\/Common\/TOOLS D:\/Program Files\/Microsoft Visual Studio\/Common\/TOOLS\/WINNT C:\/WINDOWS\/system32 C:\/WINDOWS C:\/WINDOWS\/System32\/Wbem 3、在Include Files选项中路径至少包含以下3项:D:\/Program Files\/...

C语言编程1970年1月1日0时0分0秒,输入N秒,要求打印X年X月X日X时X分...
include <stdio.h> include void main(){ time_t time_last;time_last = time(NULL);printf("%ld\\n",time_last); \/\/得到1970年到现在的秒数 unsigned long v;while(1) \/\/方便测试,一直可以输入 { scanf("%ld",&v);v = v+60*60*8; \/\/我们位于东八区 int d = v\/(60*60*24...

在C语言编程中,主函数在执行子函数里的while(1){ };的时候,突然中断来...
肯定可以的, 中断本来就是为了让其它程序运行,或者说让其它线程运行,或者说让其它函数运行。。

C语言中的SWITCH是什么意思?
switch的意思是转换。Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。汉语翻译:n. 开关, 电闸, 转换, 软枝, 鞭子, 道岔vt. 转变, 切换, 摆动, 转换, 使转轨vi. 转换, 变换, 摆动相关词组:switch sb onswitch sb offswitch sth out of sb's handasleep at...

单片机c语言中编程disp()语句是什么意思
disp() , 通常是做为显示用的函式, 用来输出(呈现)一个结果或是输出过程的一段程序码.在C语言中, 函式用来包装一小段程序, 藉由包装, 将程序结构化, 利於重复叫用及理解.单片机中, 通常使用disp()输出一个结果到显示屏或是数码管. 也有可能是 显示过程的控制程序, 例如多位数码管的扫描式...

c语言编程题 某工种按小时计算工资,每月劳动时间(小时)×每小时工资...
include <stdio.h>int main(){ int hours; float wage; float salary; scanf("%d%f",&hours,&wage); salary=hours*wage*(1-0.1); printf("the salary should be $f\\n",salary); }

PIC单片机中用C语言编程时 ADCON1 是什么意思怎么用!
在datasheet里AD部分找,很容易看懂),特别提醒,当你要用PORTA口的引脚驱动LED时一定要把驱动的那个引脚配置为普通数字IO,否则不能点亮LED,还有A4这个引脚比较特殊,漏极开路输出,作为普通数字IO时要上拉,比较麻烦,所以一般不要去碰A4这个引脚,作为模拟输入则不影响,有什么问题可以继续探讨 ...

C语言编程中\\101是什么意思
char c4='\\101'; 这里的\\101是个转义字符。C语言中,一个ASCII字符用单引号括起来,表示单字符常量,如:'a', 'A','0','9'等 C语言中,还定义了一些字母前加"\\"来表示常见的那些不能显示的ASCII字符,如\\0,\\t,\\n等,称为转义字符(因为"斜杠"后面的字符,都不是它本来的ASCII字符...

c语言中的共用体是什么
一、共同体的简介:在进行某些算法的C语言编程时,需要使几种不同类型的变量存放到同一段内存单元中,使几个变量互相覆盖,这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作共同体类型结构,简称共同体;二、共同体类型数据的特点:1.同一个内存段可以用来存放几种不同类型的成员,但在...

兰山区18847119403: C语言中的清空键盘缓冲区的fflusf(stdin)在哪些情况下可以不用?
游彬洛芬: 能用到这个函数说明你已经不是入门阶段了,讲起来会轻松一点. 在你要按确定的格式读东西,但是键盘缓冲区里可能还有在上次读入后用户按下的其他的按键信息,如果读了这些信息必然得不到正确的输入信息,所以这是要清空键盘缓冲区....

兰山区18847119403: 在C语言编程中什么时候需要用fflush(stdin)? -
游彬洛芬: fflush函数刷新一个流,可以用来防止内存地址已经占满,当把这个流指向用户标准输入(stdin)时,可以清除目前缓冲区中的内容,输入回车也会被清楚掉,例如,在scanf()之后使用fflush(stdin)是当输入缓冲区(内存)满了的时候,自动清除输入流缓冲区中所有数据,其实现在内存这么大,每次输入的数据只有几个字节,是几乎用不上的,多用上的地方是在嵌入式开发上面,因为每个固化芯片上一般只有几十K的空间,所以空间显得非常重要,此时就要用上了

兰山区18847119403: C语言里面,什么时候适合用printf函数输入输出?什么时候适合用scanf函数输入输出? -
游彬洛芬: C语言中printf用于数据输出,scanf用于数据输入 例如: #include void main{ printf("请输入整形数据:"\n); scanf("%d",&a); printf("%d",a); }

兰山区18847119403: C语言中什么时候用%d和%f -
游彬洛芬: %d和%f都是格式化输出,用来指明输出的数据类型.%d表示要输出一个整型值,%f表明要输出一个浮点型值.比如下面的语句: int a=10; float b=3.14; printf("a=%d",a);//这里要输出a,a是整型值,所以用%d; printf("b=%f",b);//这里要输出b,b是浮点型,所以用%f.

兰山区18847119403: c语言中一般什么情况下用for循环,什么情况用while循环更好? -
游彬洛芬: 当知道循环多少次的时候用FOR,当在某个条件达到之前需要一直循环的时候用while.

兰山区18847119403: C语言中什么时候要用到换行符/n -
游彬洛芬: 1、换行符是:\n,用到的地方一般都是放在printf函数中. 2、例如: printf("楼主望采纳\n"); printf("楼主望采纳"); 输出: 楼主望采纳 楼主望采纳如果不用\n: printf("楼主望采纳"); printf("楼主望采纳"); 输出: 楼主望采纳楼主望采纳\n的功能就是换行

兰山区18847119403: C语言中什么时候用int型什么时候用double型? -
游彬洛芬: 当全部是整数操作的时候用int.涉及到小数操作了用double或者float型..

兰山区18847119403: C语言中什么情况下用if语句,就是在什么条件下要用,详细点 -
游彬洛芬: 需要判断时用.编程时,若要实现“如果……”就可以用if(...)

兰山区18847119403: 请问一下,编写c语言程序的时候什么时候用int 什么时候用float double类型的函数?? -
游彬洛芬: 你要先知道不同类型的取值范围 char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 Bytes) unsigned short 0 ~ 65536 (2 Bytes) int -2147483648 ~ +2147483647 (4 Bytes) unsigned int 0 ~ 4294967295 (4 Bytes) long == int long long -...

兰山区18847119403: C语言中什么时候该用return?什么时候不用? -
游彬洛芬: void就是无返回值类型,这第一个程序定义的fun函数没有返回值类型,所以你调用的时候不会有任何作用,定义的函数是想将两个数对调一下,你可以在后面加一句printf("对调后的结果为%d%d",a,b);不见得非要用return,如果你想用...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网