Я реализовал printf
для векторного типа. Значения в типе вектора представлены как (element1, element2, ...). Например, для вектора размера 3 возможное значение может быть (1,2,3)
Моя реализация для printf
:
int my_printf(const char *format,...)
{
va_list args;
int argSize = 1; // get the number of elemts in vector
const char* vec;
vec = strchr(format,'v');
if(vec != NULL)
argSize = atol(vec + 1);
va_start (args, format);
int i = 0,ret = 0;
do // print all elements
{
ret = vprintf ("%d ", args);
fflush(stdout);
va_arg(args,float);
} while(i < argSize);
va_end (args);
return ret;
}
int main()
{
my_printf("v3",(10,12,13));
return 0;
}
В то время как va_start (args, format);
args получает значение 13, печатает его, а для следующих двух печатных изданий печатает 0 (args = 0)
Какое может быть решение?