2016-02-29 127 views
1

我需要打印可变数字的给定字符与我的格式化输出。我正在寻找与VBA函数String(num,char)类似或相当的东西,但一直未能找到任何东西。我已经写了一个函数来完成这项工作,但如果有内置的东西,我很想知道。这是我的。为了测试的目的,我使用了argv []的草率实现。如何打印单个字符的可变长度字符串

我想打印出的东西是这样的;

enter image description here

这里是粗略的实施,我想出了;

#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]); 
    } 
} 

是否有印刷重复这样的字符的字符串的库函数?

+2

你的程序像内存风暴中的货物网顶一样泄漏内存。这对您的演示程序可能无关紧要,但最好养成确保您释放所有分配的内存的习惯。 –

+2

另外,您必须确保为字符串终止符允许空格,并在每个字符串的末尾插入一个空格。 –

+1

在任何情况下,C标准库都不包含您正在查找的功能。 –

回答

2

对此答案的信用转到UmamaheshP指出我在正确的方向与评论。这正是我所寻找的,并且是从他所链接的例子中改编而来的。

#include <stdio.h> 
#include <string.h> 

int main (int argc, char *argv[]) { 
    int i; 
    char *pad = "________________"; 
    for (i = 1; i < argc; i++) 
     printf ("%.*s\n%.*s%c %s\n", strlen(argv[i]), 
      pad,strlen(argv[i]), pad, '|', argv[i]); 
}