C语言·贴心小函数们

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 <stdio.h>
#include<stdlib.h>
//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 <stdio.h>
#include<stdlib.h>
//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循环的条件满足,一直循环下去,直到手动停止
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wmpreturn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值