c - 当我用星号表示字段宽度时,它怎么少了一个空格?
问题描述
printf("12345678\n");
printf("%*c%*c, 2, 'a', 2, 'b');
在控制台上,我期望它a
会在下方3
和b
下方,6
因为我理解它的方式是我在每个字符之前指示了两个空格。但是,输出显示a
低于2
和b
低于4
。
解决方案
原因是格式说明符前面的数字定义了字段宽度,而不是边距或填充。在 format%ns
中, wheren
是一个整数并且s
是您选择的说明符,n
它定义您为将替换说明符的内容保留 n 个空格。也就是说,如果替换说明符的信息需要超过 n 个空格,它将占用它需要的空格。
因此,如果您希望字母a
和b
出现在下方3
,并且6
您需要为每个字母保留三个空格而不是两个。
printf("%*c%*c, 3, 'a', 3, 'b');
推荐阅读
- r - 使用带有数据表名称和 utils::data 向量的 map
- lua - Lua 编程 WikiBooks 中的“说明”到底是什么意思
- github - TFS 是否有发布选项卡,就像我们在 GitHub 发布时一样
- icalendar - 接收使用 iCal 等自定义日历时创建的事件
- smalltalk - 方法列表,如果它们的实现在 Smalltalk 中至少出现两次“断言”一词
- flutter - 无法运行 Flutter 项目已退出 (sigterm)
- python - 如何使用 Selenium 和 Python 在 iframe 中输入文本
- python - Lark 解析器以错误的顺序解析输入
- python - HoloViews - NdOverlay - 图例
- google-chrome - Chrome 不会加载网络字体