In c++, setw function is used to set the number of characters to be used as the field width for the next insertion operation. Is there any function in C, I mean, in standard c library, which does the same thing?
+4
A:
No, since the stream used in C doesn't maintain state the way the stream object does.
You need to specify with e.g. printf()
using a suitable formatting code.
unwind
2010-07-06 14:33:22
could you specify how could I do that? I need the equivalent formatting of 'setw(2)'......
Night Shade
2010-07-06 14:35:00
+9
A:
printf ("%5d", 42);
Will print 42 using 5 spaces. Read the man pages of printf to understand how character padding, overflow and other nuances work.
EDIT: Some examples -
int x = 4000;
printf ("1234567890\n");
printf ("%05d\n", x);
printf ("%d\n", x);
printf ("%5d\n", x);
printf ("%2d\n", x);
Gives the output
1234567890
04000
4000
4000
4000
Notice that the %2d
was too small to handle the number passed to it, yet still printed the entire value.
ezpz
2010-07-06 14:36:17
+2
A:
Another option is to define the format string as a variable:
char print_format[] = "%5d"; printf(print_format, 42);
The above is similar to C++ setw
, in that you can set the contents of the variable before printing. Many occasions require dynamic formatting of the output. This is one method to achieve it.
Thomas Matthews
2010-07-06 16:54:04