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