C语言·贴心小函数们

C语言·贴心小函数们,第1张

1、fflush(stdin)函数
这个函数好像现在不在使用了
而且仅对整型标准输入有效
fflush(stdin)清空标准输入缓冲区
sstdin是standard input(标准输入)的意思
也可以有fflush(stdout)清空标准输出缓冲区


具体实现过程:
在下面的例子里,利用while函数实现scanf循环输入,结束条件:ret=-1;即scanf返回值为-1;
显然我们需要输入的是整型,如果我们输错了,输成了字符型,那么scanf函数就无法匹配成功,此时的scanf返回值为0,则ret=0;只有等于-1时才会停止.那么在scanf 的返回值为0时,有了fflush(stdin)函数1,此时i  = 上次输入正确的数值,且不会一直执行下去
如果没有fflush(stdin)函数,i  = 上次输入正确的数值,但是会一直输出i值。
#include 
#include
//fflush(stdin)清空标准输入缓冲区

int main() 
{ 
    int i;
    int ret;//用来读取scanf的返回值
    
    while(fflush(stdin),(ret = scanf("%d",&i)) != EOF){
        printf("i = %d\n",i);
    }
    //EOF是-1,即只要scanf的返回值不等于-1,就会一直输入
    
    return 0; 
}  

/**
	终端:
	输入:234		输出:i=234
	输入:12			输出:i=12
	输入:sea		输出:i=12
	按下ctr+z,则会跳出循环,执行结束。(此时ret = -1)
*/
#include 
#include
//fflush(stdin)清空标准输入缓冲区,代码块里未包含fflush(stdin)函数

int main() 
{ 
    int i;
    int ret;//用来读取scanf的返回值
    while((ret = scanf("%d",&i)) != EOF){
        printf("i = %d\n",i);
    }

    return 0; 
}  

/**
	终端:
	输入:234		输出:i=234
	输入:12			输出:i=12
	输入:sea		
	输出:i=12 i=12 i=12 i=12...会一直输出下去
	按下ctr+z,则会跳出循环,执行结束。(此时ret = -1)
	因为此时sea为非整型类型,而且输入缓冲区里一直有内容,
	上次输入的12没有被清理,那么scanf函数就可以一直读取,
	while循环的条件满足,一直循环下去,直到手动停止
*/

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1499048.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-25
下一篇2022-06-25

发表评论

登录后才能评论

评论列表(0条)

    保存