@dandropov95

Как динамически указать длину поля для вывода в printf?

Нужно запрашивать у пользователя имя и выводить в поле, которое на 3 символа больше чем длина введенного имени.
Как динамически подставить значение в форматную строку? Или как перевести число в строку чтобы можно было вставить значение как строку. Так вроде бы можно делать.
printf("%" ЗНАЧЕНИЕ ДЛИНЫ "s", name);
  • Вопрос задан
  • 472 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
1.Можете просто сформировать правильную Си строку, добавив в конце нулевой символ, тогда printf правильно сработает при спецификаторе формата %s.
2.Если у вас не строка, а байтовый массив (т.е. нет завершающего нулевого символа), тогда можно следующим образом: printf("%.*s", (int)len, str)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Используйте snprintf чтобы сформировать форматную строку

char fsbuf[256];
...
snprintf(fsbuf, sizeof(fsbuf), "%%%ds", (int)strlen(name)+3);
printf(fsbus, name);


но что-то мне подсказывает, что задачу вы для себя сформулировали неверно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы