【发布时间】:2016-02-29 14:22:23
【问题描述】:
我需要结合我的格式化输出打印给定字符的可变数量。我正在寻找与 VBA 函数 String(num, char) 类似或等效的东西,但找不到任何东西。我已经编写了一个函数来完成这项工作,但如果有内置的东西可以做到这一点,我很想知道。这就是我所拥有的。出于测试的目的,我使用了 argv[] 的草率实现。
我想要打印出这样的东西;
这是我想出的粗略实现;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char * make_string(int num, char character)
{
char *strchars = malloc(num);
for (int i = 0; i < num; i++)
strchars[i] = character;
return strchars;
}
int main(int argc, char *argv[])
{
for (int i = 1; i < argc; i++) {
printf("%s\n", make_string(strlen(argv[i]),'_'));
printf("%s%c %s\n", make_string(strlen(argv[i]),'_'),'|', argv[i]);
}
}
是否有一个库函数可以打印这样的重复字符的字符串?
【问题讨论】:
-
您的程序会像 RAM 风暴中的货网屋顶一样泄漏内存。这对您的演示程序可能无关紧要,但最好养成确保释放所有分配的内存的习惯。
-
另外,您必须确保为字符串终止符留出空间,并在每个字符串的末尾插入一个。
-
在任何情况下,C 标准库都不包含您正在寻找的功能。
-
为什么要麻烦/费用分配内存和形成一个新的字符串?为什么不直接循环重复打印字符呢?
-
检查这个例子。我认为这会很有用。 stackoverflow.com/questions/4133318/…