第2章 C语言基础知识

第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;
}
相关推荐
小_t_同学1 分钟前
C++之类和对象:构造函数,析构函数,拷贝构造,赋值运算符重载
开发语言·c++
GSDjisidi10 分钟前
日本IT行业|salesforce开发语言占据的地位
开发语言·职场和发展
martian6651 小时前
从Windows开发迁移到信创开发的指南:国产替代背景下的技术路径与实践
开发语言·科技·系统架构·系统安全·创业创新
YuforiaCode1 小时前
第十六届蓝桥杯 2025 C/C++组 破解信息
c语言·c++·蓝桥杯
南玖yy1 小时前
C++ 成员变量缺省值:引用、const 与自定义类型的初始化规则详解,引用类型和const类型的成员变量自定义类型成员是否可以用缺省值?
c语言·开发语言·c++·后端·架构·c++基础语法
YuforiaCode1 小时前
第十六届蓝桥杯 2025 C/C++组 旗帜
c语言·c++·蓝桥杯
YuforiaCode1 小时前
第十六届蓝桥杯 2025 C/C++B组 第二轮省赛 全部题解(未完结)
c语言·c++·蓝桥杯
大G哥1 小时前
Java 中的 Integer 缓存池:背后的性能优化机制解析
java·开发语言·缓存·性能优化
小虚竹2 小时前
claude 3.7,极为均衡的“全能型战士”大模型,国内直接使用
开发语言·后端·claude·claude3.7
牛马baby2 小时前
Java高频面试之并发编程-11
java·开发语言·面试