c - 如何将范围(0,4)中的空格添加到C中的字符串
问题描述
我正在寻找一种在 C 中创建此输出的方法:
Hello World!
Hello World!
Hello World!
Hello World!
而每次“Hello World!” 正在打印,另一个“”正在添加到字符串中。打印字符串不是问题 - 但我不确定如何使用空间。以下是我当前的代码。
实施“”的一个思路是增加“”次i
。理论上,这应该在字符串的开头添加正确数量的空格。
#include <stdio.h>
int main()
{
for(int i=0;i<4;i++){
printf("\nHello World!");
}
//idea: spaces = " " * i
return 0;
}
解决方案
从我的角度来看,Hello World!
它们需要在每次迭代时从右侧偏移 3 个额外的字符。因此,如果您从定义的 shift 开始3
然后 loop 0 - 4
,您可以在printf
字符串前面使用可变字段宽度修饰符来产生偏移量,例如
#include <stdio.h>
#define SHIFT 3 /* if you need a constant, #define one (or more) */
#define NLINES 4
int main (void) {
for (int i = 0; i < NLINES; i++) /* loop for NLINES iterations */
printf ("%*sHello World!\n", i * SHIFT, ""); /* increase by multiples of shift */
}
格式由格式字符串创建,"%*sHello World!\n"
其中"%*s"
需要字段宽度的整数参数,其中'*'
in"%*s"
将替换为提供的整数字段宽度,该字段宽度是i * shift
提供以 3 的倍数递增的偏移量的结果。
示例使用/输出
$ ./bin/hwshift
Hello World!
Hello World!
Hello World!
Hello World!
以上似乎捕获了想要的格式。如果您有其他问题,请查看并告诉我。
推荐阅读
- javascript - 在为 Discord 服务器创建 BOT 时,如何在 discord.js 中“scanf()”和“printf()”用户的消息?
- asp.net - 在不使用控制器的 ViewBag 的情况下填充下拉列表,但它可以在 asp.net mvc 中工作,它是如何发生的?
- java - 杰克逊 com.fasterxml.jackson.databind.exc.MismatchedInputException 与空字符串
- json - Bot Framework API 创建与多个成员的对话
- azure-devops - 在 Azure DevOps Servvices 中,我们可以在不同的环境之间共享一个 VM 吗?
- java - 多层次的继承混乱
- verilog - 减法是否需要比verilog中的比较符号更少的资源?
- java - 如何将内部请求从微服务发送到网关
- python - Python pandas,如何转换数据框
- java - java中如何从List中获取id