scanf在竞赛中的技巧总结ing

本文详细介绍了C语言中使用scanf函数进行复杂输入流处理的方法,包括如何精确读取指定长度的字符串、过滤特定字符及提取数值,适用于需要从混合输入中筛选数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

当输入流是一个字符串,我们需要在其中提取我们所需要的数值时,我们可以在读入阶段就完成数据的筛选工作。

使用方法

  • scanf("%ns", str);

    表示读取长度为n的字符串

    输入:123456

    输出str:123 ( 以scanf("%3s", str);为例 )

  • scanf("%[a-z]", str);

    表示读取a-z的小写字母,出现非a-z的小写字母,立即停止读取。

    输入:abcd123

    输出str:abcd

  • scanf("%*[a-z]%s", str);

    %*[ ]表示过滤掉满足括号内条件的字符串   %[ ]表示读取

    输入:abcd123

    输出str:123

  • scanf("%[^0-9]", str);

    ^表示非,^0-9表示非0-9的一切字符,因此是遇到0-9就立即停止读取。

    输入:abcd123

    输出str:abcd

    PS:%[^\n] 表示 读取回车符以前的所有字符,常用于读取含空格的字符串

      %[^ ] 表示 读取空格符以前的所有字符。

  • scanf("%*[^\n]%d", &num);

    表示过滤掉回车以前所有的字符,并将回车符的下一个数字赋给num。

    输入:abcd\n12

    输出num:12

    PS:%*[^ ]表示过滤空格以前的所有字符

  • scanf("%nd", &num);

    表示读入一个n位数字,储存在num中

    输入12314    scanf("%3d", &num);

    输出num :  123

转载于:https://www.cnblogs.com/woxiaosade/p/10480570.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值