【入门二】格式化输入/输出

格式化输出说的是printf, 形式主要是:   printf(格式串 + 表达式1,表达式2, ...);

格式串主要包括普通字符和转换说明%d, %f, 所谓转换说明,如%d, 就是指printf

函数把int整数型值从二进制转换成十进制数字组成的字符串,%f则是对float浮点型

进行类似操作

 

实例1

按 月/日/年 的格式输入日期,按 年/月/日 输出日期

 1 # include <stdio.h>                            // <stdio.h>是标准输入/输出函数库
 2 
 3 int main(void)                                 // int表明main函数返回的是整数值
 4 {
 5     int month, day, year;                      // 声明3个整数型变量
 6     
 7     printf("Enter a date(mm/dd/yyyy):");       // 每个语句以 ; 结尾, 由于开头的预指令只占据一行,故不用加冒号
 8     scanf_s("%d / %d / %d", &month, &day, &year); // 注意格式串的空格可以防止输入时输入空格导致发生错误
 9 
10     printf("You entered the date %d-%d-%d\n", year, month, day);
11 
12     return 0;                                  // 返回整数值0,0表示函数是正常退出的,从而结束程序
13 }
点我

由此引出了我们要讲的第二个函数scanf_s(书里讲的是scanf函数,不过用它会发出警告),就

格式化输入函数,也就是用户可以通过这个函数输入数据,这个函数读取数据的方式有点奇葩,

首先它的形式一般是这样滴, 假设a,b是我们定义的两个int型变量:

scanf_s("%d %d", &a, &b);

用户输入的是   ..32..24  (点代表空格),这丫在寻找数的开头时,会跳过空格,也就是它先跳过两个

空格,发现3,可以是整数的开头,所以函数接着读取第二个字符2,直到遇到后面的空格,发现不是

整数,所以把34存入变量a,把空格放回去,完成第一个%d的工作。

同理,跳过后面的空格,开始找第二个整数的开头(函数会一直跳过空白字符直到找到非空白字符为止)........

----------------------------------------------------------------------------------------------------------

实例2

 1 # include <stdio.h>
 2 
 3 int main(void)
 4 {
 5     int number, year, month, day;   // 声明三个整数型变量
 6     float price;                    // 声明浮点型变量
 7 
 8     printf("输入项目数目: ");       // sacnf_s函数前面的printf会自动换行,此处不用再加 '\n'
 9     scanf_s("%d", &number);
10 
11     printf("输入单位价格: ");
12     scanf_s("%f", &price);
13 
14     printf("输入购买日期: ");
15     scanf_s("%d / %d / %d", &year, &month, &day);  // 注意此处斜杠与转换说明%d之间带有空格
16     // '\t'表示水平列表符,%7.2表示$之后及包括Price(比如是13.5)在内的字符长度一共是7,浮点数带2位小数
17     printf("Item\tUnit Price\tPurchase Date\n%d\tS%7.2f\t%d-%d-%d\n", number, price, year, month, day);
18 
19     return 0;
20 
21 
22 }
查看

 

此处,需要格外注意的是水平列表符 \t,比如Unit Price与Purchase Day,由于两者的字符长度超过了7个空格的

长度,(就是8个字符及以上长度),本来U与P之间是间隔8个字符长度的( 即Item和它与Unit之间的空白间隔 ) ,10

个字符长的Unit Price的关系,导致U到P的距离由8个长度变成16个长度。导致下面的$+float也得超过7个长度,

才能往后推8个长度,从而使日期与 Purchase Date 对齐!

转载于:https://www.cnblogs.com/Ruby517/p/5750925.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值