【C语言入门到精通 03】格式化输入/输出

这篇博客详细介绍了C语言中的格式化输入/输出,包括printf和scanf函数的使用。内容涵盖转换说明、字段宽度、精度等概念,并通过实例解析了函数的工作原理。同时强调了在使用中需要注意的潜在问题,如参数匹配、错误处理等。
摘要由CSDN通过智能技术生成

03 格式化输入/输出

A programming language is low level when its programs require attention to the irrelevant.1

码字不易,对你有帮助 **点赞👍/转发↪️/关注 👀 ** 支持一下作者
微信搜公众号:不会编程的程序圆
看更多干货,获取第一时间更新

请将本片与下一节《数据类型》 联系起来一起“食用”。

注:本教程含有超纲内容!!!如果你看不懂,不要丧失信心,可以“不求甚解”一些,关键是要多写代码!然后继续学习下面的内容!

🗺思维导图


✉️写在前面


如果只是写个人学习总结的博客很容易,简单写一些感悟然后贴上代码走人就可以了,甚至不用校审。但是我命名本系列为【C语言必知必会】帮助你从入门到精通 C语言,那势必要“事无巨细”一些:既要考虑到没有基础的初学者,又不能止于基础。所以本教程适合各类人群学习,只要你看就一定会有帮助。

本教程是本人纯手打并排版,校审由我与我的搭档汤圆君一起完成的。你们看这一篇文章我要写好几个小时。如果文章对你有帮助,请不要“白嫖”。支持一下作者,作者会发更多干货好文。

特别鸣谢:汤圆君(公众号:【Cc听香水榭】 长期更新高质量英语教学)关注她表示对她工作的认可吧!

▶️ 此符号表示该内容以后的章节会讲解,此章节内不要求理解。

🌐目录


printf 函数

printf()函数打印数据的指令要与待打印数据的类型相匹配。例如,打印整数时使用 %d,打印字符时使用 %c 。这些符号被称为转换说明(conversion specification),它们指定了如何把数据(以2进制形式)转换成可显示的形式。

例如:

printf("I am %d years old", 18);

这是 printf()的格式:

printf(格式字符串,待打印项1,待打印项2,...);

待打印项都是要打印的的项。它们可以是变量,常量,甚至是在打印之前计算的表达式。上例中,只有一个待打印项: 18 。

格式字符串包含两种不同信息:

  • 普通字符:以字符串中出现的形式打印出来。上例中,“I am” 与 " years old" 为普通字符
  • 转换说明:用待打印项的值来替换。上例中,"%d" 为转换说明

⚠️

C语言的编译器不会检测格式字符串中转换说明中的数量与待打印项总个数是否相匹配。

1.缺少参数

printf("%d %d\n", i); // wrong

printf 会正确显示 i 的值,然后显示一个无意义的整数值。

2.参数过多

printf("%d\n", i, j);// wrong

而在这种情况下,printf 函数会显示变量 i 的值,但是不会显示变量 j 的值


printf 转换说明

转换说明这部分我做了很久,比较详细,配合下一章数据类型才能看懂大部分,剩下的就需要你在不断使用的过程中领悟了。

  • 标志(可选,允许出现多于一个)

    - 字段内左对齐(默认右对齐)
    + 在打印的数前加上 + 或 - (通常只有负数前面附上减号)例1
    空格 在打印的非负数前前面加空格( + 标志优先于空格标志)例2
    # 对象:八进制数,十六进制数,以g/G 转换输出的数 例3
    0 用前导 0 在字段宽度内对输出进行填充。如果转换格式为d,i,o,u,x(X),而且指定了精度,可以忽略 0 例4

    例 1:

    	printf("%d\n", 123);
    	printf("%d\n", -123);
    	printf("%+d\n", 123);
    	printf("%+d\n", -123);
    
    123
    -123
    +123
    -123
    

    例 2:

    printf("% d\n", 123);
    printf("% d\n", -123);
    printf("% +d\n", 123);
    
     123
    -123
    +123
    

    例 3:

    printf("%o\n", 0123);
    printf("%x\n", 0x123);
    printf("%#o\n", 0123);
    printf("%#x\n", 0x123);
    printf("%#g\n", 123.0);
    printf("%g\n", 123.0);
    
    123
    123
    0123
    0x123
    123.000
    123
    

    例 4:

    printf("%5d\n", 123);
    printf("%05d\n", 123);
    printf("%5.3d\n", 123);
    
      123
    00123
      123
    
  • 最小字段宽度(可选)

    如果数据项太小无法达到这个宽度,那么会对字段进行填充。(默认情况下会在数据项左侧添加空格,从而使字段宽度内右对齐)。

    如果数据项过大以至于超过了这个宽度,那

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值