繁体   English   中英

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

[英]c - how can I print specified count of a char in a line

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

====================================

而且我需要控制char的计数,并能够指定要打印的char。

我不想使用循环。

是否可以使用单个printf()语句来做到这一点?


@Update

我问这是因为有时我会以这种方式使用printf:

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

因此,如果printf可以做到这一点,那么就可以按照我的要求做,我不确定...现在我知道它不能...

好的,我编写了一个简单的util函数来执行此操作:

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

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

并且,谢谢大家的帮助。

#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。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM