我理解的C语言 #4:格式化输入与输出

本文介绍了C语言中的格式化输出和输入。printf()函数用于格式化输出,转换说明如%d用于输出整数,通过修饰符增强其功能。转义字符用于输出特殊字符。scanf()函数用于格式化输入,需要使用取地址符&获取变量地址。输入结束条件包括空格、回车和非法字符。文章还讨论了缓冲区的概念以及在输入字符时遇到的常见问题和解决方案。
摘要由CSDN通过智能技术生成

格式化输出:

在前几篇文章的代码样例中多次出现了printf(),在这里进行详细说明。

printf("hello world");

printf()是C语言自带的输出函数,包含在头文件<stdio.h>中,能够把括号中双引号内的内容原样输出到屏幕上。但这样只能输出固定的内容,而我们的变量是在一直改变的。为了输出变量,printf()函数还提供了格式化输出的用法。

int a = 1;
printf("%d",a);

上面的%d就是转换说明,告诉printf()函数我们需要输出的是十进制整数,而逗号后的a就是我们要输出的变量。注意,转换说明和后面的变量(或数字和字符)需要按顺序一一对应。常用的转换说明及其打印的输出结果汇总如下。

转换说明 输出
%c 单个字符
%d 有符号十进制整数
%f 浮点数,十进制计数法
%p 指针
%s 字符串
%u 无符号十进制整数
%% 打印一个百分号

但这么少的转换说明符显然不能满足我们的使用需求,因此我们可以在%和转换字符之间插入修饰符来修饰转换说明。

修饰符 含义
数字 最小字段宽度,如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段:“%4d”
.数字(注意前面有一个点) 精度。对于%f表示小数点右边数字的位数。对于%s表示待打印字符的最大数量。对于整型打印,表示待打印数字的最小位数,如果有必要会使用前导0来达到这个效果。如果只有 . 表示其后跟随一个0,因此%.f和%.0f相同。:“%5.2f“
h 与整型转换一起使用,表示short int或unsigned short int类型的值:”%hu“、”%6.4hd“
l 与整型转换一起使用,表示long int或unsigned long int类型的值:”%8lu“、”%ld“。或与实型转换一起使用,表示double类型的值:”%lf“
ll 与整型转换一起使用,表示long long int或unsigned long long int类型的值:”%8llu“、”%lld“
L 与实型转换一起使用,表示long double类型的值:”%Lf“
- 待打印项左对齐,从字段的左侧开始打印该项:”%-20s“
+ 有符号值若为正,则在值前面显示加号;若为负,则在值前面显示减号。
空格 有符号值若为正,则在值前面显示前导空格(不显示任何符号);若为负,则在值前面显示减号加上标记并覆盖空格:”% 6.2f“

这些符号实际上并不需要去死记硬背,在自己写代码的过程中会慢慢熟悉。

如果读者有认真看了ASCII码表可能会有印象,表上除了很多我们可以直接打印出来的字符,还有很多无法直接打印的符号,比如”换行“或者会引起歧义的双引号等(因为双引号是printf()语句输出内容的边界)。C语言中通过转义字符(反斜杠”\“)来解决这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值