C-equivalent of the 'setw' function
In c++, setw function is used to set the number of characters to be used as the field width for the next insertion operation.开发者_C百科 Is there any function in C, I mean, in standard c library, which does the same thing?
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.
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.
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.
setw
Manipulator:
This manipulator sets the minimum field width on output. The syntax is:
setw(x)
Here setw
causes the number or string that follows it to be printed within a field of x
characters wide and x
is the argument set in setw
manipulator. The header file that must be included while using setw
manipulator is
Sample Code
#include <iostream>
using namespace std;
#include <iomanip>
void main( )
{
int x1=12345,x2= 23456, x3=7892;
cout << setw(8) << "Exforsys" << setw(20) << "Values" << endl
<< setw(8) << "E1234567" << setw(20)<< x1 << endl
<< setw(8) << "S1234567" << setw(20)<< x2 << endl
<< setw(8) << "A1234567" << setw(20)<< x3 << endl;
}
精彩评论