```c
#include
#include
#include
#include
char *my(char *format, ...)
{
va_list list;
//1. 先擷取格式化後字元串的長度
va_start(list, format);
int size = vsnprintf(NULL, 0, format, list);
va_end(list);
if(size <= 0) {
return NULL;
}
size++;
//2. 複位va_list,将格式化字元串寫入到buf
va_start(list, format);
char *buf = (char *)malloc(size);
vsnprintf(buf, size, format, list);
va_end(list);
return buf;
}
int Hpush(char *p){
int len = strlen(p);
int i = 0;
char c ;
for(i = 0;i< len;i++){
printf("%c",*(p+i));
}
}
void Hpushf(char *format, ...)
{
va_list list;
//1. 先擷取格式化後字元串的長度
va_start(list, format);
int size = vsnprintf(NULL, 0, format, list);
va_end(list);
if(size <= 0) {
return ;
}
size++;
//2. 複位va_list,将格式化字元串寫入到buf
va_start(list, format);
char *buf = (char *)malloc(size);
vsnprintf(buf, size, format, list);
va_end(list);
Hpush(buf);
}
char *p="yhp,hello";
int main(){
//Hpush(p);
Hpushf("%s\n",p);
return 0;
}
```
```c
#include
#include
double average(int num,...)
{
va_list valist;
double sum = 0.0;
int i;
va_start(valist, num);
for (i = 0; i < num; i++)
{
sum += va_arg(valist, int);
}
va_end(valist);
return sum/num;
}
int main()
{
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}
```