文章目录
- 前言
- 1.输入和输出
- 1.1输出(printf)
- 1.2输入(scanf)
- 2.常用占位符
- 2.1限定宽度
- 2.2限定小数位数
前言
刚学 C 语言时,printf 和 scanf 是最早碰到的两个函数,但别小看它们——很多人写了好几年,偶尔还会在 scanf 的 & 和 %c 上栽跟头
这篇文章把输入输出的常见用法和易错点都梳理了一遍,适合刚入门的朋友快速上手,也适合随手翻出来复习
1.输入和输出
1.1输出(printf)
printf是C语言stdio.h这个库函数中的输出函数,将变量或者文本打印到屏幕上
示例
#include<stdio.h>intmain(){inta=10;intb=20;printf("Hello world!\n");printf("a = %d\n",a);printf("b = %d\n",b);return0;}printf: 可以打印双引号中的内容,也可以通过占位符打印变量的值
1.2输入(scanf)
scanf是C语言stdio.h这个库函数中的输入函数,是从键盘读取数据然后给变量
示例1
#include<stdio.h>intmain(){intscore=0;printf("请输入成绩:\n");scanf("%d",&score);printf("成绩:%d",score);return0;}⚠️注意:
要输入的变量前面一定一定要加上 &,我在写的有时候也很容易忘记
❌错误写法:scanf(“%d”, score);
✅正确写法:scanf(“%d”, &score);
示例2
#include<stdio.h>intmain(){inta=10;scanf("wd %d",&a);printf("a = %d\n",a);return0;}scanf:双引号的内容会成为“匹配模板”,输入时必须完全照搬这些内容,否则匹配失败,变量不会被赋值
❌错误写法:20
✅正确写法:wd 20
示例3
#include<stdio.h>intmain(){charc1=0;charc2=0;scanf("%c",&c1);scanf(" %c",&c2);printf("c1 = %c\n",c1);printf("c2 = %c\n",c2);return0;}💡原理与避坑:
特性:%c 是唯一一个不会跳过空格和换行的占位符(空格和换行符也属于字符)
踩坑:所以我们在输入一个字符然后按下回车的时候,就直接打印了,回车(换行)直接被当成第二个字符了
解决:在%c 前面加上一个空格,就可以避免这种情况
推荐写法:scanf(" %c", &c2); (%c 前留一个空格)
2.常用占位符
占位符从名字上来看就是占位子的,事实也确实如此
在printf和scanf用了占位符,就是代表这个位置可以由其他值替代
| 占位符 | 对应的数据类型 |
|---|---|
| %d | int |
| %ld | long |
| %lld | long long |
| %f | float |
| %lf | double |
| %c | char |
| %s | 字符串 |
| %u | unsigned int |
| %zu | size_t |
💡提示:
size_t是一种无符号整数类型,sizeof的返回值就是size_t类型的
2.1限定宽度
#include<stdio.h>intmain(){inta=100;intb=100;printf("a = %5d\n",a);printf("b = %-5d\n",b);return0;}关于 %5d 和 %-5d 的规则:
1.限定宽度
在 % 后面加上数字,可以限定最小输出的宽度
如果实际宽度更长,会完整输出(不会截断)
2. 对齐方式
默认情况下是右对齐(前面补空格)
如果加上负号(-),就是左对齐(在后面补空格)
2.2限定小数位数
#include<stdio.h>intmain(){floatf1=10.55;floatf2=5.445;printf("f1 = %f\n",f1);printf("f2 = %.2f",f2);return0;}关于 %f 的小数位控制:
限定小数位: 在 %f 中加入 . 和数字,即可限定小数位数
四舍五入: %.2f 会对数字进行四舍五入,而不是直接截断
如果这篇文章对你学习 C 语言有帮助,麻烦动动手指点赞,关注,加收藏,你的支持是持续更新干货的最大动力!