Заполнение пробелами в массиве char

Я пишу программу для написания головы для определенного формата изображения. Этот формат изображения требует 256 символов в качестве заголовка перед любыми последующими необработанными данными изображения. Но у меня есть проблемы с заполнением пустых мест, чтобы заголовок длиной 256 символов.

Ниже приведена абстракция моей проблемы:

char pad[256];
sprintf( pad, "header info:%s=%f", "scale", 2.3);
cout<<pad<<"data here"<<endl;

Выход:

header info:scale=2.300000data here

Тем не менее, результат, который я ожидаю, выглядит так:

header info:scale=2.300000                            data here

где «данные здесь» появляются после 256 символов от начала файла.
Как я могу изменить программу, чтобы заполнить пустые места в массиве символов?

0

Решение

Сделай это:

cout << setw(256) << left << pad << "data here" <<endl;

Вам может понадобиться #include <iomanip>,

Кстати в вашем «реальном коде» вы должны использовать snprintf чтобы избежать шансов переполнения буфера, при условии, что ваш %s собирается получить некоторый аргумент, который работает во время выполнения. (Или желательно заменить sprintf со струнным потоком).

0

Другие решения

Может быть, это может помочь вам. Формат - который слева выравнивает текст. Например, следующее будет выравнивать текст с плавающей запятой слева с фиксированной шириной 20. При этом в качестве отступа используется символ пробела по умолчанию.

sprintf( pad, "header info:%s=%-20f", "scale", 2.3);
0

По вопросам рекламы [email protected]