C++ scanf和printf格式化输入输出

C++ scanf和printf格式化输入输出

本文用于介绍scanf和printf的基本使用方法

1. scanf

数据类型 格式符 举例
int %d scanf("%d",&n);
long long %lld scanf("%lld",&n);
float %f scanf("%f",&fl);
double %lf scanf("%lf",&db);
char %c scanf("%c",&c);
char数组 %s scanf("%s",str);

助记:需要把数据往一个地址中写。所以,第二个参数是地址,而数组名称本身就代表了数组第一个元素的地址。

例:

char str[10];
scanf("%s", str);//abc efg
printf("%s", str);//abc

注意

  1. %c可以读取空格和换行,其他的格式符(包括%s)都是以空白符(空格,换行)为结束判断标志的。除非使用%c把空格按字符读入,其他情况都会自动跳过空格。
  2. string类型不可以通过scanf读取
string s1;
scanf("%s", s1);//abc
printf("%s", s1);//abc

但如果使用cin来读取,printf输出,就会得到帼n

是因为scanf对C++所有类都不支持,包括string。使scanf兼容string的解决方法自行百度吧,这里记录的是我常用的方法。
第3条会记录string的读取和输出方法。

2. printf

数据类型 格式符 举例
int %d printf("%d",n);
long long %lld printf("%lld",n);
float %f printf("%f",fl);
double %f printf("%f",db);
char %c printf("%c",c);
char数组 %s printf("%s",str);

double类型的格式符是%f,需要和scanf中的%lf区分。建议浮点数就使用double类型,精度高。

输出格式

%[flags][width][.precision][length]格式字符

格式符 说明
flags - 靠左对齐
+ 强制在正数前输出+,复数前输出-
# 使用o,x,X时,在数据前加0,0x,0X
width %md 宽度,若数据小于宽度,在左边补上空格
%0md 宽度,若数据小于宽度,在左边补上0
.precision p 浮点数输出p位小数,不是四舍五入,四舍五入找round

注意:
如果不加width,那么输出浮点数就会默认精确到小数点后6位。

例:

double d = 3.15;
printf("%.1f", d);//3.1

你可能感兴趣的:(C++记录)