printf函数与scanf函数

📅 2026/7/24 14:05:01
printf函数与scanf函数
目录1.printf函数I.常见占位符使用II.占位数与参数注意事项占位符的约束2.scanf函数I.返回值II.常见占位符使用III.占位符补充知识1.printf函数包含于头文件stdio.h中使用前需声明头文件。printf意味print(打印) format(格式化)即格式化的输出打印。格式化拥有使用格式化占位符的能力。打印将内容输出至输出设备(屏幕)。I.常见占位符使用%c : 字符char%d : 十进制整数int%u : 无符号十进制整数unsigned int%f : 对应float与double类型%lf : 对应double类型%p : 指针用于打印地址%s : 字符串%x : 十六进制整数使用占位符后需要在双引号后面声明相应类型的内容:#include stdio.h int main() { int a 100; printf(%d, a);//输出内容100 return 0; }II.占位数与参数注意事项几个占位符后面就对应几个参数。如果参数数量多于占位符数量多余的参数会被printf忽略不会造成越界读取。如果参数数量少于占位符数量多余占位符会越界调用内存上的数据此时可能输出之前函数留下的缓存或一些垃圾数据表现为输出一些无中生有的数字。占位符的约束1.printf默认不显示正数的正号如果想让其显示要在占位符的百分号%后面加上正号例如%s2.对于占位符可以约束其精度与长度。m.n%sm指最小宽度位数不够用空格补充默认右对齐在字符串左边补空格-m对应左对齐(在字符串右边补空格)。若实际字符串长度大于m则此时m不起作用。n指精度即最长输出长度多余的长度会被直接丢弃。若实际字符串长度小于n则n不起作用。m.n%fm指最小宽度此时宽度整数宽度小数点小数宽度位数不够空格来补位数小于整体宽度则自动生效。正数是向右对齐负数是向左对齐。n指精度保留n为小数(n的默认值为6)位数不够用0来补截断时会进行四舍五入。m.n%dm指最小宽度位数不够会使用空格补全m小于整数位数则自动失效正数时向右对齐负数时向左对齐。n指精度至少用n位显示数字位数不够会用0来补n小于整数位数则自动失效。#includestdio.h int main() { int a 123; float b 3.1415926; char c [8] eeeeeee; printf(-%-6.6d-\n, a);//输出-000123- printf(-%6.3f-\n, b);//输出- 3.142- printf(-%6.3s-\n, c);//输出- eee- return 0; }先算n再算m2.scanf函数包含于头文件stdio.h中使用前需声明头文件。在visual studio里需使用scanf_s函数或者声明#define _CRT_SECURE_NO_WARNINGS才可以使用具体原因见“III.占位符补充知识”I.返回值scanf函数的返回值为它读取成功的变量个数。当没有读取到变量或者匹配失败(例如使用%d却输入a)时会返回0。若在成功读取所有变量之前发生读取错误或者读取到文件结尾则返回常量EOF-1II.常见占位符使用与printf函数基本相同另作补充%f:仅仅代表float类型浮点数%lf:代表double类型浮点数%[]:在方括号中匹配字符如果某一字符不在方括号范围内则停止后续匹配III.占位符补充知识1.对于非%c类型会自动忽略一开始的空白字符从第一个非空白字符开始匹配。而%c类型无论第一个字符是否为空白都会直接匹配如果想让%c忽略一开始的空白字符可以在%c前面加一个空格。2.直接使用scanf函数报错原因scanf读入字符时不会检测长度会全部读入当读入的字符串长度超过数组长度会发生严重错误。