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

本文详细介绍了scanf和printf在C/C++中的基本用法,涉及数据类型格式化、内存地址操作、printf输出格式控制,以及scanf限制与解决办法,特别提到了字符串处理和不兼容string的处理方式。
摘要由CSDN通过智能技术生成

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

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

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

例:

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

 
 
  • 1
  • 2
  • 3

注意

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

 
 
  • 1
  • 2
  • 3

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

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

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

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

输出格式

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

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

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

例:

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

 
 
  • 1
  • 2
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值