scanf()的使用注意、scanf() printf()格式字符

scanf()的使用注意、scanf() printf()格式字符
#include <stdio.h>

int main(int argc, char const *argv[])
{
	
	char buf[100] = {0};
	printf("请输入字符串:");
	scanf("%s", buf);//不需要&, 默认以空格分开
	printf("buf = %s\n", buf);


	char tmp[100] = {0};
	printf("请输入字符串tmp:");
	scanf("%s", tmp);//不需要&, 默认以空格分开
	printf("tmp = %s\n", tmp);
	

	//scanf()的缺陷,不做越界检查
	char str[10] = {0};
	printf("请输入字符串str:");
	scanf("%s", str);//不需要&, 默认以空格分开
	printf("str = %s\n", str);
	

	return 0;
}

scanf()的使用注意、scanf() printf()格式字符
printf,scanf格式字符:

打印格式 对应数据类型 含义
%d int 接受整数值并将它表示为有符号的十进制整数
%hd short int 短整数
%hu unsigned short 无符号短整数
%o unsigned int 无符号8进制整数
%u unsigned int 无符号10进制整数
%x,%X unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF
%f float 单精度浮点数
%lf double 双精度浮点数
%e,%E double 科学计数法表示的数,此处"e"的大小写代表在输出时用的"e"的大小写
%c char 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
%s char * 字符串。输出字符串中的字符直至字符串中的空字符(字符串以’\0‘结尾,这个’\0’即空字符)
%p void * 以16进制形式输出指针
%% % 输出一个百分号

printf附加格式:

字符 含义
l(字母l) 附加在d,u,x,o前面,表示长整数
- 左对齐
m(代表一个整数) 数据最小宽度
0(数字0) 将输出的前面补上0直到占满指定列宽为止不可以搭配使用-
m.n(代表一个整数) m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度,用于说明输出的实型数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。