【1】基本概念
【1.1】 数据--------》屏幕
printf()
printf_s()
(1)printf只是检查format字符串是否为空。如果为空,会触发assert(false)。
(2)printf_s还会检查format字符串是否有效,即其中格式是否合法。如果不合法,也会触发assert(false)。
【1.2】数据--------》字符缓冲区
sprintf()
sprintf_s()
(1)sprintf_s是sprintf的安全版本,指定缓冲区长度来避免sprintf()存在的溢出风险,
主要差在sprintf_s第二个参数,可以控制缓冲区大小
【1.3】printf()与sprintf()的区别
(1)函数printf(...)根据指定的格式(format)将参数(argument)输出到屏幕上;
(2)函数sprintf(...)根据指定的格式(format)将参数(argument)输出到
由指针buffer指定的字符数组(字符缓冲区)中;
(3)sprintf比printf多一个参数buffer,
【2】代码
// Test38.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
/*
【1】 数据--------》屏幕
printf()
printf_s()
(1)printf只是检查format字符串是否为空。如果为空,会触发assert(false)。
(2)printf_s还会检查format字符串是否有效,即其中格式是否合法。如果不合法,也会触发assert(false)。
【2】数据--------》字符缓冲区
sprintf()
sprintf_s()
(1)sprintf_s是sprintf的安全版本,指定缓冲区长度来避免sprintf()存在的溢出风险,
主要差在sprintf_s第二个参数,可以控制缓冲区大小
printf()与sprintf()的区别
(1)函数printf(...)根据指定的格式(format)将参数(argument)输出到屏幕上;
(2)函数sprintf(...)根据指定的格式(format)将参数(argument)输出到
由指针buffer指定的字符数组(字符缓冲区)中;
(3)sprintf比printf多一个参数buffer,
*/
int main()
{
//[0]printf()常用方法
// %[flags][width][.prec][length]type
// %[标志][最小宽度][.精度][类型长度]类型。
//[1]--------------------------------类型--------------------------------------
//类型:d(整形),o(无符号八进制),c(字符型),s(字符串),f(浮点型)
printf("%d\n", 10);
printf("%o\n", 10);
printf("%c\n", 'a');
printf("%s\n", "fsgs");
printf("%f\n", 10.0006);
//10
//12
//a
//fsgs
//10.000600
//[2]--------------------------------标志--------------------------------------
// - 减号 结果左对齐,右边填空格。默认是右对齐,左边填空格。
// + 加号 输出符号(正号或负号)
// space 空格 输出值为正时加上空格,为负时加上负号
// # 井号 type是o、x、X时,增加前缀0、0x、0X。
// type是a、A、e、E、f、g、G时,一定使用小数点。默认的,如果使用.0控制不输出小数部分,则不输出小数点。
// type是g、G时,尾部的0保留。
// 0 数字零 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“ - ”)
printf("%-d\n", 10);
printf("%+d\n", 10);
printf("% d\n", 10);
printf("%#o\n", 10);
printf("%0d\n", 10);
//10
//+ 10
//10
//012
//10
//[3]--------------------------------精度------------------------------------
//用十进制整数来表示输出的最少位数。若实际位数多于指定的宽度,则按实际位数输出,
//若实际位数少于定义的宽度则补以空格或0。width的可能取值如下
printf("%.8d\n", 10);
printf("%.6d\n", 10);
printf("%*8d\n", 10);//以星号代替数值,类似于width中的*,在输出参数列表中指定精度。
// 00000010
//000010
//- 641
//[4]--------------------------------类型长度------------------------------------
//用十进制整数来表示输出的最少位数。若实际位数多于指定的宽度,
//则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。width的可能取值如下
printf("%hhd\n", 'A'); //输出有符号char
printf("%hhu\n", 'A' + 128); //输出无符号char
printf("%hd\n", 32767); //输出有符号短整型short int
printf("%hu\n", 65535); //输出无符号短整型unsigned short int
printf("%ld\n", 0x7fffffffffffffff); //输出有符号长整型long int
printf("%lu\n", 0xffffffffffffffff); //输出有符号长整型unsigned long int
//65
//193
//32767
//65535
//- 1
//4294967295
}