scanf函数中转化说明

先简要介绍下scanf函数以及工作方法:                     

             函数原型:int scanf ( const char * format, ... );
             返回值:返回成功读取到的字符个数(至于什么时候读取失败,下面讨论)还有一种是遇到EOF;                                                                工作方法:从左边开始处理字符串的信息,如果遇到转化说明,则该函数会从输入的数据中进行匹配并且必要时跳过空格;遇到不可能属于此项的字符时停止,若成功读入则会继续处理余下字符串的内容,否则函数会立即返回;

工作方法(详解):                                                                                                                                                                                         scanf函数在每次匹配转化说明时会忽略若干空格(不包括%c)  例子辅助理解:

scanf("%d%d", &x, &y);  //此时你可以输入         3         4
                         //也可以换行输入\n 3\n 4   他依旧会成功读入x,y

     scanf函数读入数据时会依次读入字符直到遇到不可能属于此数据的字符时,它会将此字符放回原处,以便下次读入时使用。 例子辅助理解

#include<stdio.h>
int main(void)
{                           //结果:
	int a = 0;                    //a = 2
	int b = 0;                    //b = -40
	float c = 0.0f;               //c = 0.42
	float d = 0.0f;               //d = -3.0e4
	scanf_s("%d%d%f%f", &a, &b, &c, &d); //输入   2-40.42-3.0e4\n   
	return 0;
}

当格式串中遇到普通字符时:

        1.空白字符:格式串的空白字符可以匹配任意数量个输入中的空白字符(可能为0个),直到遇到非空白字符它才会介绍匹配,这会导致一个问题;

scanf("%d ", &x);//你输入一个数字后,交互式程序还在等待输入,你必须输入一个非空白字符他才会退出

      2. 其他字符:格式符中的其他字符会匹配输入中的字符,若匹配成功则继续处理余下格式串,若匹配失败则会返回,异常退出。

scanf("%d/%d",&x,&y);//如果你输入2/3没问题,但是你输入2 /3它就会异常退出,因为空格和/不匹配、

利用上述工作原理可以实现数的

逆序打印:

int main(void)
{
	int a, b, c;
	scanf("%1d%1d%1d", &a, &b, &c);
	printf("%d%d%d", c, b, a);
	return 0;
}

分数的输入:

scanf("%d / %d",&x,&y);// /两边加上空格可以防止不少错误
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值