C-эквивалент функции setw
В c++ функция setw используется для задания количества символов, которые будут использоваться в качестве ширины поля для следующей операции вставки. Есть ли какая-нибудь функция в C, я имею в виду, в стандартной библиотеке c, которая делает то же самое?
4 ответа:
printf ("%5d", 42);
Выведет 42, используя 5 пробелов. Прочитайте man-страницы printf, чтобы понять, как работает заполнение символов, переполнение и другие нюансы.
Править: Некоторые примеры -
int x = 4000; printf ("1234567890\n"); printf ("%05d\n", x); printf ("%d\n", x); printf ("%5d\n", x); printf ("%2d\n", x);
Дает выход
Обратите внимание, что1234567890 04000 4000 4000 4000
%2d
был слишком мал, чтобы обработать число, переданное ему, но все же напечатал все значение.
Нет, поскольку поток, используемый в C, не поддерживает состояние, как это делает объект stream.
Вам нужно указать, например,
printf()
, используя подходящий код форматирования.
Другой вариант-определить строку формата как переменную:
char print_format[] = "%5d"; printf(print_format, 42);
Вышеописанное похоже на C++
setw
, в котором можно задать содержимое переменной перед печатью. Во многих случаях требуется динамическое форматирование выходных данных. Это один из способов ее достижения.
Манипулятор Setw: Этот манипулятор устанавливает минимальную ширину поля на выходе. Синтаксис таков:: setw (x) Здесь setw вызывает число или строку, которая следует за ним, чтобы быть напечатанным в поле x символов в ширину и x является аргументом, установленным в манипуляторе setw. Заголовочный файл, который должен быть включен при использовании манипулятора setw: Пример Кода
#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; }