首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C-如何在一行中打印指定数量的字符

C-如何在一行中打印指定数量的字符
EN

Stack Overflow用户
提问于 2014-11-27 15:40:46
回答 2查看 2K关注 0票数 0

我想打印一条类似于以下内容的行:

代码语言:javascript
运行
复制
====================================

我需要控制这个字符的计数,并且能够指定要打印哪个字符。

我不想用循环。

用一个printf()语句就可以做到这一点吗?

@更新

我这样问是因为有时我用printf的方式:

printf("%10s\n", "abc");

所以,如果printf能做到这一点,那就有可能按我的要求去做,我只是不确定.现在我知道它不能..。

好的,我编写了一个简单的util函数来完成这个任务:

代码语言:javascript
运行
复制
#include <stdio.h>

void printRepeatChar(char c, int count) {
    char cs[count+1];
    int i;
    for(i=0; i<count; i++)
        cs[i] = c;
    cs[count] = '\0';
    printf("%s\n", cs);
}

int main(int argc, char * argv[]) {
    printRepeatChar('-', 6*4);
}

也许使用memset()来自string.h而不是直接循环使代码更短,就像在答案中一样。

谢谢大家的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-27 15:48:51

代码语言:javascript
运行
复制
#include <stdio.h>
#include <string.h>

void PrintStuff( char to_print, int length ) {

    // adjust buffer size as desired
    char buffer[256];

    // -1 for null terminator
    if( length > sizeof(buffer)-1 ) length = sizeof(buffer)-1; 

    // fill buffer with desired character
    memset( buffer, to_print, length );

    // add null terminator
    buffer[length] = 0;

    // print to output
    puts( buffer );
}

int main() {
    PrintStuff( '=', 11 );
    return 0;
}

http://ideone.com/RjPr83

要回答子问题:不行,printf不能作为格式化规则重复字符。它只能在填充时重复空格或0。

票数 3
EN

Stack Overflow用户

发布于 2014-11-27 15:50:35

代码语言:javascript
运行
复制
#include <stdio.h>
#include <string.h>
int main(void) {
    char c='=';
    char a[20];
    memset(a,c,(sizeof(a)-1));
    a[19] = '\0';
    printf("%s\n",a);
    return 0;
}

可以添加动态内存分配和字符扫描。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27174310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档