如何使用格式说明符而不是循环重复打印字符?

问题描述

我想重复打印一个字符'*',在该字符上输入No。重复星号的次数。

示例: count = 20,我想使用********************格式说明符打印printf()

解决方法

当然,仅使用格式说明符就无法实现这一目标。您可以将循环隐藏在宏中,但是您肯定需要在某个地方循环。

,

您无法使用printf()提供的标准格式说明符执行此操作。但是,如果您愿意浪费一些空间在程序中存储填充字符串,则可以采用一种有问题的解决方案(假定最大填充长度是合理的)。

#include <stdio.h>

int main(void) {
    const char *fill = "********************"; // 20 chars

    printf("%.*s\n",10,fill);
    printf("%.*s\n",15,fill);

    int n = 20;
    printf("%.*s\n",n,fill);

    return 0;
}

这可以使用.*来提供要打印的字符串的最大长度作为第一个参数。

输出:

**********
***************
********************

注意:您最多只能填充strlen(fill)个填充字符(在上面的示例中为20个字符),除此之外,printf都将停留在{{1} } \0的终止符。

,

我希望这是您要寻找的东西:

#include <stdio.h>
int main()
{
printf("%.*s",20,"********************************");;
  return 0;
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...