• 欢迎访问C语言网www.dotcpp.com 比赛栏每月有奖月赛!举办比赛联系QQ:2045302297
  • 问题反馈、粉丝交流 QQ群327452739 蓝桥杯训练群:113766799 申请群时请备注排名里的昵称
  • C语言研究中心 为您提供有图、有料、解渴的C语言专题! 欢迎讨论!

scanf专题:你可能不知道的scanf的用法

C语言研究中心 CTO 52683次浏览 11个评论

上一篇讲解了printf的一些高级用法,不知道大家有没有学到东西,相应的,这篇该为大家介绍对应的输入函数scanf的一些功能了!

 

 

scanf作为C语言标准函数库中的格式化输入函数,大家对它常规的使用应该都很明白,

 

接收控制的格式除了常用的%d,%c,%f等以外, 我们今天重点讲解*在scanf中的用法和scanf的返回值的用法两点。

 

 

第一个,%*的用法,表示接收读取但不存对应的指定的类型数据。举个例子:

int a,b;

scanf(“%d%*c%d”,&a,&b);  大家在输入1,2或者1/2时就都可以将1赋给a,2赋给b了。而中间的字符虽然接收但不用存储,完美的解决用户再输出两个数字时可能有分隔的问题。!

怎么样呢,大家根据情况该用就用!

 

第二个,scanf函数返回值的用法。这一用法在ACM竞赛当中尤为普遍,也是ACM入门的必学内容。

scanf与printf一样,同为函数,那么也有对应的返回值为int类型。声明情况如下图:

scanf专题:你可能不知道的scanf的用法

scanf的返回值作用是表示成功接收对象的个数,比如如下代码,注意scanf接受情况对比结果:

 

1>两个整数正常输入

 

scanf专题:你可能不知道的scanf的用法

 

2>两个整数非正常输入

 

scanf专题:你可能不知道的scanf的用法

 

3>两个整数带%*分隔正常输入

 

scanf专题:你可能不知道的scanf的用法

 

请大家注意以上三种情况的输入对应的返回值情况,大家自行分析理解,来理解scanf的返回值和*的作用!

 

ACM输入输出入门有兴趣大家可以参考训练场(ACM/NOI)基本输入输出教程

 

 

祝大家学习愉快!

 

 

C语言研究中心(www.dotcpp.com)

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

C语言网, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明scanf专题:你可能不知道的scanf的用法
喜欢 (238)
[jinyangH@aliyun.com]
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
(11)个小伙伴在吐槽
  1. 带两个整数正常输入和非正常输入的图不是一样的吗
    网管2018-07-19 11:23 回复
    • 输入形式不一样的
      静风幻想2018-09-12 23:13 回复
      • 为什么我在编译器中打出来还是记为返回值为二了
        指尖之间2018-11-30 20:27 回复
    • 注意一个用空格分开 一个用逗号分开的 是不一样的
      ANIKITYN2019-06-12 22:11 回复
      • 为什么用,分开就不行
        2022-10-19 19:40 回复
  2. c语言考试会有这个考点吗
    无病呻吟2018-11-25 20:22 回复
  3. #include int main() { int a,b; int c; c = scanf(“%d*c%d”,&a,&b); printf("a = %d \nb = %d\nc= %d\n",a,b,c); return 0; } 为啥我的显示编译错误?????
    自强不息方得始终2021-11-04 11:05 回复
    • 你头文件都没有,无法调用printf函数...#include才对吧
      学C美少女2022-01-08 14:29 回复
    • c = scanf("%d*c%d",&a,&b); 双引号是中文格式 ,换成英文的就好:idea:
      横渠四句2024-10-04 17:09 回复
  4. 当碰到两个scanf分开写的时候该怎么解决另外一个输入 比如:#include int main() { int a,b,c,d,e,f; printf("请输入:"); c=scanf("%d%d",&a,&b); printf("%d\n",c); printf("请输入:"); f=scanf("%d%*c%d",&d,&e); printf("%d\n",f); } 他直接跳过了下面的scanf输入函数
    暮风2022-09-29 21:23 回复
    • 你这个程序是可以执行的,没有问题,我试过了 #include int main(void) { int a,b,c,d,e,f; printf("请输入:"); c = scanf("%d%d",&a,&b); printf("%d\n",c); printf("请输入:"); f=scanf("%d%d",&d,&e); printf("%d\n",f); return 0; }
      无名2022-11-03 17:26 回复