一、输出函数的使用
1.1整型输入输出
1.1.1.转换说明
%d-----------有符号十进制整数
%o-----------无符号八进制整数
%X/x--------无符号十六进制整数
%u-----------无符号十进制整数
1.1.2转换说明修饰符
%4d--------------4可以替换任何数字,代表最小字段宽度,如果该字段不能容纳打印的数字,系统 会使用更宽的字段
%.3d--------------小数点后边的数字可以替换任何数字,在整型类型输出中,表示待打印数字的最 小位数,不够的话需要前边加0来达到这个位数
%4.3d(45)-----输出----045;
%h(d/u/x/0)-------表示short int /unsigned short int;
%hh(u/x/d/o)-----表示unsigned char/signed char 类型的值;(不是很理解在这里,深入学习后下 去查)
%l(d/u)----------long int /unsigned long int
%ll(d/u)---------long long int /unsigned long long int
%zd---------------sizeof使用这个转换符
%td---------------ptrdiff_t类型的值(两个指针差值的类型)
1.2浮点型输出
1.2.1转换说明
%f----------------float类型浮点数
%lf--------------double类型浮点数
%e/E--------------e计数法
(以上均默认六位小数)
%g/G-------------自动选择e计数法或者十进制法
%a/A--------------十六进制计数法(P计数法)
1.2.2转换说明修饰符
%4d--------------4可以替换任何数字,代表最小字段宽度,如果该字段不能容纳打印的数字,系统 会自动四舍五入;
%.3d--------------小数点后边的数字可以替换任何数字,在浮点型类型输出中,表示小数点后边的 位数
1.3字符型输出
1.3.1转换说明
%c-----------------单个字符
%s-----------------字符串
1.3.2转换说明修饰符
%4d--------------4可以替换任何数字,代表最小字段宽度,如果该字段不能容纳打印的字符串,系 统会使用更宽的字段
%.3d--------------小数点后边的数字可以替换任何数字,在字符串输出中,表示待打印字符的最大 数量
1.4 其他标记
- ----------------------- 表示左对齐 eg. %-20s;
+ ------------------------ 表示输出正数带+,负数带-;
空格( )------------- 如果是正数,输出数字前边留一个空格;负数的话,空格变负号;
# -----------------------把结果转换为另一种格式 eg.%#x,%#o;
0 ----------------------- 数值格式------前导0代替空格填充字段宽度
整数格式,如果出现了标记的指定精度(小数点加数字)或者左对齐标记,0 无用
*------------------------eg.%*d,程序有两个参数,第一个是*,表示字符宽度,第二个是d对应的数值。
eg.printf(“The number is %*d”,width,number);
printf(“The number is %*.*f”,width,precision,number);
二、输出函数本身
2.1函数的返回值
函数返回打印字符的个数,空格以及字符串最后的隐藏\0也会算内(转义字符是一个字符)
2.2函数转换不匹配
计算机根据变量类型(而不是转换说明)将这些值放入栈中,函数根据转换说明从栈中读取数据,因此在多个输出函数中,只要有一个错了,其他转换说明即使是对的,也会输出虚假的结果。另一方面,如果使用较短内存的数据类型读取长数据类型,会发生截断。
2.3printf函数的使用
printf(" 打印的东西,包括数据转换说明",待打印项1,待打印项2,待打印项3,...);
打印长字符串,可以用分两句话打印,不加\n;
也可以一句话中用\和enter 键输入两句话;
也可以两个“” “"输出语句。
二、输入函数
2.1修饰符
%p-------------指针变量
*----------------省略该值 %*d
2.2scanf函数的使用
scanf("语句",&变量/数组名称)
scanf函数使用空白(换行符,制表符和空格)将输入分成多个字段,在转换说明和字段匹配时会跳过空白。
scanf函数在读取数据时,从第一个遇到的非空白字符开始,会在字段结尾或者第一个空白字符处停止,多个字符读取时,程序在非第一次读取过程中,首先读到的是上一次丢弃的字符,如果此时格式不匹配,就会输出错误值。
scanf("%d %d",%a,&b);
scanf("%d%d",%a,&b);效果相同;
scanf("%c"&b);,从第一个字符开始读取;
scanf(" %c",&b);从第一个非空白字符读取。
scanf("%d,%d",%a,&b); 格式字符串中的空白意味着跳过下一个输入项前面的所有空白。
scanf("%d ,%d",%a,&b);
2.3函数返回值
成功便会返回成功读取的项数;没有读取任何项,且需要一个数字用户输入非数值字符串,返回0;检测到“文件结尾”时,会返回EOF。