C 语言中输入格式 scanf(“%2d%*2s%2d“,&a,&b)是什么意思

这篇具有很好参考价值的文章主要介绍了C 语言中输入格式 scanf(“%2d%*2s%2d“,&a,&b)是什么意思。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直接说明

代码

 #include <stdio.h>
int main()
{
    int a,b;
    scanf("%2d%*2s%2d",&a,&b);
    printf("%d,%d\n",a,b);
}

测试1

输入:123456

输出:12,56

测试2

12345678

输出:12,56

问题:%*2s是什么输入格式,有什么作用

答案:表示的是忽略对应输入的这部分数,那么到底忽略那部分数呢?以下是详细分析

详解:假如输入值为123456,那么根据根据输入函数的格式scanf("%2d%*2s%2d"),%2d就是取123456中的第一和第二位数,取走之后,就只剩下3456;%*2s表示忽略我所对应的这部分数,就是把3456的第一位和第二位字符不要,那么就只剩下56了,最后56就放在b地址里面了。

作用:可以用作在输入格式中,不限定输入的形式。

取个例子,要求上面代码输出格式为1,2,34.请设计输入scanf函数的输入形式,能满足以下几种输入形式:

第一种输入方式:1,2,34(以逗号做分隔符);

第二种输入方式:1 2 34 (以空格做分隔符);

第三种输入方式:1        2        34(以tab键做分隔符)

第四种输入方式:1

                             2

                             34        (以回车符做分隔符)

那么可以将输入格式设计为这样:scanf("%c%*c%c%*c%c",&a,&b,&c)

等于说是,无论你输入其它什么形式的分隔符,都可以用%*c将其吞掉,而不受影响,同时又起了兼容各种分隔形式符的作用。


下面我们再进行拓展一下,%*d、%.*d、%*f、%*lf、%*c、%*s。大家一看这么多,是不是头一下就大了啊,别着急,只要有耐性看下去,你就能完全理解啦。

注意:%*d、%.*d、%*f、%*lf、%*c、%*s在输入函数scanf个输出函数printf里面作用是不同的

下面我们将上面这些输入格式在scanf和printf里面分别讨论

一、scanf函数格式

1.%*d格式

具体例子

#include <stdio.h>
 
int main()
{
    int a=0,b=0,c=0;
    scanf("%*d%d%d",&a,&b,&c);
    printf("%d,%d,%d\n",a,b,c);
}

测试1:
输入 12 34 56
输出 34,56,0   //忽略输入的第一个值12,因此等于说输入值为 34和56,在对这两个数与a,b,c一一匹配,a匹配的是34,b匹配的是56,c没有匹配值,就是原值0.

测试2:
输入 77 88 99
输出 88,99,0    //同上原理

 %*d作用:忽略输入所对应的整数值,或者说直接将其所对应的值删除。

例子说明:忽略输入的第一个值12,因此等于说输入值为 34和56,在对这两个数与a,b,c一一匹配,a匹配的是34,b匹配的是56,c没有匹配值,就是原值0。

2.%.*d格式

具体例子

#include <stdio.h>
 
int main()
{
    int a=0,b=0,c=0;
    scanf("%d%.*d%d",&a,&b,&c);
    printf("%d,%d,%d\n",a,b,c);
}

测试1
输入 12 34 56
输出 12,0,0


#include <stdio.h>
 
int main()
{
    int a=0,b=0,c=0;
    scanf("%.*d%d%d",&a,&b,&c);
    printf("%d,%d,%d\n",a,b,c);
}

测试2:
输入 12 34 56 
输出 0,0,0

%.*d作用:忽略其所对应的值及其之后的所有值

例子说明:在上面第一个代码中,我们将%.*d放在输入函数格式中间,发现只能输出第一个值,第二个和第三个都无法输出。在第二个代码中,将%.*d放在输入函数前面,发现都无法输入值,因此可以判断%.*d的作用就是将其对应值及之后的值都删除掉。

3.%*f、%*lf、%*c、%*s

它们的作用都等同于%*d,只不过数据格式不同,适用于浮点数,字符和字符串,就不一一说明了文章来源地址https://www.toymoban.com/news/detail-821801.html

二、printf函数格式

1.%*d  根据实际情况在前面补空格

int a=123;     

printf("a=%*d",2,a);
输出:a=123  
(输出全部123,长度>2,不需要补空格)
跟没指定一样!

printf("a=%*d",10,a);
输出:a=空格空格空格空格空格空格空格123    
(往前补7个空格,补够总共10个位)

2.%.*d 根据实际情况在前面补0

printf("a=%.*d",2,a);
输出:a=123  
(输出全部123,长度>2,不需要补0)
跟没指定一样!

printf("a=%.*d",10,a);
输出:a=0000000123    
(往前补7个0,补够总共10个位)

很显然这种情况意义不大,因为我们很少需要补0.
所以基本不用这种写法。

3.%*f 根据实际情况在后面补0

float a=12;
printf("a=%*f",3,a);
输出:a=123.000000
默认小数点后面6位。而且肯定会输出全部,
所以10位>指定的3位,跟没指定一样!

printf("a=%*f",13,a);
输出:a=空格空格空格123.000000
默认小数点后面6位。而且肯定会输出全部10位,
剩下3位,所以在前面填3个空格(小数点也算一位)

4.%.*f 指定小数点后几位

5. %*s 根据实际情况在前面家空格

char *a="123456";
printf("a=%*s",5,a);
输出:a=123456;因为5<6,所以跟没指定的一样

printf("a=%*s",10,a);
输出:a=空格空格空格空格123456

6.%.*s 指定截取前面的几位数

char *a="123456";
printf("a=%.*s",4,a);
输出:a=1234;
截取前面4位数

printf("a=%.*s",10,a);
输出:a=123456
截取前面10位数,因为只有6位,
所以跟没指定的一样!

到了这里,关于C 语言中输入格式 scanf(“%2d%*2s%2d“,&a,&b)是什么意思的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】scanf多组输入的三种方法!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,相信大家都多多少少了用过scanf语句吧,但是对scanf函数没有全面的认识仅仅只是知道可以输入。    ⛳️ 今天博主就给大

    2024年02月06日
    浏览(46)
  • C 语言用户输入详解:scanf、fgets、内存地址解析及实用指南

    您已经学习了 printf() 函数用于在 C 语言中输出值。 要获取用户输入,可以使用 scanf() 函数: scanf() 函数接受两个参数:变量的格式说明符(在本例中为 %d )和引用运算符( myNum ),用于存储变量的内存地址。 scanf() 函数还允许进行多个输入(例如,在下面的例子中,用户可

    2024年02月03日
    浏览(61)
  • 【C语言】EOF搭配while循环来控制scanf输入的次数

    目录 EOF是什么? EOF搭配while的实际应用场景1 EOF搭配while的实际应用场景2 补充 后言 EOF , 在C语言的标准函数库中表示 文件结束符 (end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。 在文本文件中,数据都是以字符的ASC

    2024年02月10日
    浏览(39)
  • 【C语言基础】数据输入输出

    📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉 📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处 数据输入的作用:

    2024年02月11日
    浏览(43)
  • 【C语言趣味教程】(8) 标准 IO 流:输入和输出 | 标准输入 stdin | 标准输出 stdout | 详解 printf 和 scanf | 探讨 scanf 缓冲区问题和安全性问题

        🔗 《C语言趣味教程》👈 猛戳订阅!!! 0x00 引入:I/O 的概念 计算机中的输入和输出,简称 ,其中:  代表 Input,即输入。

    2024年02月09日
    浏览(51)
  • 【初阶C语言】关于scanf函数的超详细介绍和多组输入

    感谢各位可以光临娥子的作品   我们学习一个函数,要围绕三个点 :1.函数是什么  2.函数的用法   3.注意的细节 认识一个 函数,我们需要了解他的功能、返回值、接收的参数三个方面 函数原型  (1)功能介绍          scanf函数是一个输入函数 ,所以接收的参数类型需

    2024年02月08日
    浏览(54)
  • 爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗

    🚀 作者:阿辉不一般 🚀 你说呢: 不服输的你,他们拿什么赢 🚀 专栏:爱上C语言 🚀 作图工具:draw.io ( 免费开源的作图网站) 如果觉得文章对你有帮助的话,还请点赞,关注,收藏支持博主,如有不足还请指点,博主及时改正,感谢大家支持!!! 大家好啊😉!今天阿

    2024年02月05日
    浏览(56)
  • C语言中输入函数scanf在使用中不能加上换行符号\n

    (1)是一种输入函数。 (2)以vs编译器为例,vs编译器不提供该函数这样的写法,在使用中,需要先声明定义。在主函数前定义,如下: #define _CRT_SECURE_NO_WARNINGS 1 下面以一个题目举例:      题目为  计算n的阶乘 (1)错误的示范: (2)错误分析  要输入2次,为什么? (

    2024年02月06日
    浏览(43)
  • C语言格式化输出函数printf详解——C语言基础知识

    (由于篇幅较长,内容较全,建议收藏) printf函数的一般格式为: printf(格式控制字符串,输出值参数表); 如: 其中, f=%f,c=%fn 是 格式控制字符串 , f,c 是 输出值参数表 。 (1)格式控制字符串是用双引号括起来的字符串,包括三类信息: 格式字符。格式字符由“%”

    2023年04月08日
    浏览(42)
  • C语言(输入输出函数getchar,putchar、gets、puts,scanf,printf的功能以及用法)

    int getchar( void ); 返回值为int,所以需要用一个int变量来接收,不管输入几个字符,每次都只接收第一个字符,常与while和putchar配合使用。 从下面这张图可以看出,输入一个空格也会打印 当然,获取一个字符用得不多,每次都需要获取一串,所以我们可以配合while来使用。 用

    2024年02月02日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包