第2章 C语言基础知识
1.printf()函数
在控制台输出数据,需要使用输出函数,C语言常用的输出函数为printf()。
printf()函数为格式化输出函数,其功能是按照用户指定的格式将数据输出到屏幕上。
printf("格式控制字符串",[输出列表]);
格式控制字符串:指定输出格式,以%开头,%符号后面跟各种格式控制字符;格式控制字符串的具体形式: "%标志][宽度][.精度][长度]类型",例如: %c、%d、%3d、%.6f ┄
(1)类型
printf()函数可以输出任意类型的数据,如整型、字符型、浮点型数据等。
格式控制字符 | 含义 |
---|---|
s | 字符串 |
c | 单个字符 |
d | 有符号十进制整型 |
u | 无符号十进制整型 |
o | 无符号八进制整型 |
x | 无符号十六进制整型小写 |
X | 无符号十六进制整型大写 |
f | 单精度/双精度浮点型(默认打印6位小数) |
e | 科学记数e |
E | 科学记数E |
p | 变量地址 |
类型应用示例一:
c
printf("%c", 'H'); //以%c格式输出字符'H'
printf("%s", "Hello, world!\n"); //以%s格式输出字符串"Hello, world!"
printf("%d", 100); //以%d格式输出整数100
类型应用示例二:
c
printf("%d%d%d\n",1,2,3); //使用3个%d输出三个整数1、2、3
printf("%f\n%c\n",2.1,'a'); //使用%f与%c输出2.1与字符'a'
(2)标志
printf()函数中的标志字符用于规范数据的输出格式,如左对齐、右对齐、空缺填补等,标志符有"-""+""0""空格""#"五种。
标志符 | 含义 |
---|---|
- | 左对齐;printf()函数输出数据默认为右对齐 |
+ | 当一个数为正数时,前面加上一个+符号。默认正数不显示+符号 |
0 | 右对齐时,用0填充左边空缺。默认使用空格填充 |
空格 | 输出正数时,前面为空格;输出负数时,前面带-符号 |
# | 对%c、%s、%d、%u等无影响;对%o格式,输出时加上八进制前缀0;对%x(%X)格式,输出时加上十六进制前缀0x |
(3)宽度
宽度是用十进制表示的输出数据的位数,若实际位数多于定义的宽度,则按实际位数输出;若实际位数少于定义的宽度则补以空格或0。
宽度应用示例一:
c
printf("%d\n", 123); //按实际位数3输出
printf("%5d\n", 123); //设置宽度为5
printf("%10d\n", 123); //设置宽度为10
宽度应用示例二:
c
printf("%d\n", 123);
printf("%-5d\n", 123); //添加-符号,左对齐输出
printf("%010d\n", 123); //添加0,左边以0填充
(4)精度
精度格式以字符"."开头,后面跟十进制整数,精度主要作用于浮点型数据,表示输出小数点后面的位数。
- 如果不设置精度,默认输出小数点后6位。
- 如果作用于整型数据,则表示按照一定宽度输出数据,左侧空缺填充0。
- 在使用精度时,如果实际位数大于所定义的精度数,则截去超出的部分。
精度应用示例:
c
printf("%f\n", 1.234567); //默认输出小数点后6位
printf("%.8f\n", 1.234567); //输出小数点后8位,后面填充0
printf("%.3f\n", 1.234567); //输出小数点后3位,截断超出的部分
printf("%.6d\n", 123); //输出123的宽度为6,左侧填充0
(5)长度
长度格式符包括h、l两种,h是short的简写,表示按短数据类型量输出;l是long的简写,表示按长数据类型输出。
长度应用示例:
c
printf("%d\n", 123); //正常输出
printf("%hd\n", 123); //按短数据类型输出
printf("%lf\n", 1.23); //按长数据类型输出
2.scanf()函数
scanf()函数用于读取用户从键盘输入的数据,用法与printf()函数类似,但不同的是,scanf()函数只能使用类型(%d、%c、%f等)格式控制,并不使用宽度、精度、标志等格式控制。
scanf()函数应用示例:
c
int a;
char c;
float f;
scanf("%d", &a); //接受一个从键盘输入的整型数据
scanf("%c", &c); //接受一个从键盘输入的字符类型数据
scanf("%f", &f); //接受一个从键盘输入的float类型数据
注意:
scanf()函数在读取输入的数据时,遇到终止符会停止输入。
scanf()函数的终止符有多个。
字符 | 含义 |
---|---|
0x20 | 空格 |
\t | 水平制表符(tab键) |
\n | 换行 |
\v | 垂直制表符 |
\f | 换页 |
\r | 回车 |
scanf()函数不安全,经常导致程序编译不通过。
解决办法
1.#define _CRT_SECURE_NO_WARNINGS
2.C11标准中的scanf_s()函数代替scanf()函数
案例
c
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("我爱C语言");
return 0;
}