C-эквивалент функции setw


В c++ функция setw используется для задания количества символов, которые будут использоваться в качестве ширины поля для следующей операции вставки. Есть ли какая-нибудь функция в C, я имею в виду, в стандартной библиотеке c, которая делает то же самое?

4 9

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