Предположим, у меня есть следующая функция:
void fprint(float f, int ds) {
printf("%.%df\n", ds, f);
}
Я хочу, чтобы вызывающая сторона указала число с плавающей точкой для печати, а также количество цифр после десятичной точки. (указывается спецификатором .%d
)
Однако при компиляции я получаю 2 предупреждения:
./sprint.h: In function ‘fprint’:
./sprint.h:19:14: warning: conversion lacks type at end of format [-Wformat=]
printf("%.%df\n", ds, f);
^
и
./sprint.h:19:12: warning: too many arguments for format [-Wformat-extra-args]
printf("%.%df\n", ds, f);
^~~~~~~~~
И когда он вызывается: fprint(3.1422223f, 3);
, он выдает: %df
Я также попытался поменять местами порядок аргументов в объявлении функции, но он выдает те же предупреждения.
У меня вопрос: как я могу добавить спецификатор формата (например, %d
в данном случае) в существующий спецификатор формата?