为了账号安全,请及时绑定邮箱和手机立即绑定

请问下c++如果只想输出前5个字符,怎么用格式字符串实现?

请问下c++如果只想输出前5个字符,怎么用格式字符串实现?

C C++
HUX布斯 2022-05-12 18:11:45
c++ 一个16进制数,如果输出时要求有数据前缀怎么处理?对于scanf函数,如果输入的是实数来给double类型变量赋值,用%6f格式字符串,结果会怎样?新人求教,谢谢,
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

首先要说明的两点是:

  1. C++提供了cin和cout来进行输入输出,不建议再采用C语言中的scanf和printf来输入输出;

  2. 如果用scanf和printf输入输出,就要遵循格式规范,不要试图去测试不匹配的情况,你的问题是%ld明明针对的是long类型的数据,你非要用它来接收short类型的变量,这样得到的结果是不确定的,也完全没有意义(因为C语言设计的初衷就是给成熟的程序员使用的语言,认为使用C语言的人都会遵循规范,保证输入输出的正确是C程序员的职责)

接下来回答你的问题,按照你的提问使用格式字符串:

  1. short变量,选用%ld格式字符串通过scanf函数来赋值,结果是未定义的;

  2. 只想输出前5个字符,怎么用格式字符串实现,我目前没有办法实现,除非对原始字符串进行处理,取出前五个字符组成子字符串,然后进行输出;

  3. 一个16进制数,如果输出时要求有数据前缀怎么处理?用%#X应该就可以了;

  4. scanf函数只能接收%lf,来处理double变量,不能指定格式,格式的指定应该在printf中,而不是scanf中


查看完整回答
反对 回复 2022-05-15
?
交互式爱情

TA贡献1712条经验 获得超3个赞

1.对于short变量,选用%ld格式字符串通过scanf函数来赋值,结果怎样?
在int整数范围内没有问题,(short与int整数范围相同)
2.如果只想输出前5个字符,怎么用格式字符串实现
形如 printf("%5.5s\n", "12345678"),可输出字串的前5位。

查看完整回答
反对 回复 2022-05-15
  • 2 回答
  • 0 关注
  • 363 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号