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(х) Здесь setw заставляет номер или строку, которая следует за ним, печататься в поле шириной X символов, а x-это аргумент, установленный в setw manipulator. Файл заголовка, который должен быть включен при использовании setw manipulator Пример Кода

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