codeomnitrix codeomnitrix - 25 days ago 7
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:

#include<stdio.h>
#include<stdarg.h>
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);
}
va_end(ap);
}


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

234561345138032514932134513792


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

Answer

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)