【问题标题】:How to print a variable length string of a single character如何打印单个字符的可变长度字符串
【发布时间】: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/…

标签: c vba function c-strings


【解决方案1】:

这个答案的功劳归于 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]);
}

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2021-02-16
    • 2018-08-22
    • 2013-02-28
    • 2021-06-25
    相关资源
    最近更新 更多