2016-02-29 124 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]); 
}