Eric
Eric

Reputation: 24944

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

I want to print a line similar as following:

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

And I need to control the count of the char, and able to specify which char to print.

I don't want to use loop.

Is it possible to do this with a single printf() statement?


@Update

I ask this because I use printf in this way sometimes:

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

So, if printf could do this, then it's possible to do what I ask, I am just not sure ... now I know it can't ...

Ok, I wrote a simple util function to do this:

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

maybe use memset() from string.h instead of the direct loop makes the code shorter, just as in the answers.

And, thank you all for help.

Upvotes: 0

Views: 2674

Answers (2)

mukunda
mukunda

Reputation: 2995

#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


And to answer the subquestion: no, printf cannot repeat a character as a formatting rule. It can only repeat spaces or 0's when padding.

Upvotes: 3

Gopi
Gopi

Reputation: 19874

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

Dynamic memory allocation and character scanning can be added to this .

Upvotes: 2

Related Questions