gpt4 book ai didi

c - 重复并打印C中最短字符数的一个字符

转载 作者:太空狗 更新时间:2023-10-29 15:36:15 25 4
gpt4 key购买 nike

目前,我正在尝试以尽可能少的字符重复单个字符。例如,我实际上使用类似的东西来重复一系列空格:

printf("%*s",i,"");

我想知道在 C 中是否有类似、甚至更短/不同的方式来重复字符串并将其打印出来,就像空格一样。

如果可能的话,我想要类似这样的东西:

printf("%*s",i,"_");

然而,据我所知,这是不可能的,无论对我来说多么理想。

为了澄清,在这些示例中,参数 i 表示我希望字符重复的次数,即第二个示例应该输出(如果我说,12):

____________

注意:它不一定与 printf 相关,但是,它必须很短。

本质上,我想重复一个字符指定的次数,然后输出。

编辑:我目前正在使用允许 31 个字符的 for 循环,但是通过使用与上述类似的方法,由于程序的结构方式,我可以再减少 7 个字符。所以循环并不是很理想。

最佳答案

你可以使用memset:

void * memset ( void * ptr, int value, size_t num );
// Fill block of memory
// Sets the first num bytes of the block of memory pointed by ptr to the specified value
// (interpreted as an unsigned char).

所以你会这样做,假设 dest 是你的目标字符串:

memset(dest, '_', 12);

编辑:这是一个非常“原始”的解决方案。它不会在字符串的末尾放置一个 '\0',因此如果您希望您的字符串只包含重复的字符并以标准方式格式化,您也必须处理它。您当然必须处理 12 也可能比分配给 dest 的空间更大的事实。

最后一件事:memset 的使用可能比您使用自己的循环所做的任何事情都更有效,因为 memset 可以通过以下方式以非常有效的方式实现您的编译器(即高度优化的汇编代码)。

关于c - 重复并打印C中最短字符数的一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com