codeomnitrix codeomnitrix - 1 year ago 88
C Question

How to count the number of arguments passed to a function that accepts a variable number of arguments?

How to count the no of arguments passed to the function in following program:

void varfun(int i, ...);
int main(){
varfun(1, 2, 3, 4, 5, 6);
return 0;
void varfun(int n_args, ...){
va_list ap;
int i, t;
va_start(ap, n_args);
for(i=0;t = va_arg(ap, int);i++){
printf("%d", t);

This program's output over my gcc compiler under ubuntu 10.04:


so how to find how many no. of arguments actually passed to the function?

Answer Source

You can't. You have to manage for the caller to indicate the number of arguments somehow. You can:

  • Pass the number of arguments as the first variable
  • Require the last variable argument to be null, zero or whatever
  • Have the first argument describe what is expected (eg. the printf format string dictates what arguments should follow)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download