#include <stdio.h>
#include <stdarg.h>
typedef struct stu{
unsigned char * name;
unsigned char old;
unsigned int num;
}STU_STRUCT;
int myprintf(char *format,...)
{
va_list p;
int num;
char *str;
char c;
double money;
STU_STRUCT stu;
printf("%s",format);
va_start(p, format);
num = va_arg(p, int);
printf("%d\n", num);
c = va_arg(p, int);//注意是int,不是char!
printf("%c\n", c);//取栈地址p的数据即字符
str = (char *)va_arg(p, int);//注意转换为字符串指针
printf("%s\n",str);
stu = va_arg(p, STU_STRUCT);
printf("name:%s,old:%d,sizeof(struct person):%d\n",stu.name,stu.old,sizeof(struct stu));
money = va_arg(p, double);//注意此处浮点类型为double,不是float!
printf("%f\n",money);
return 0;
}
int main()
{
STU_STRUCT stu1 = {"hyx",24,12345};
printf("name:%s,old:%d\n",stu1.name,stu1.old);
printf("hello\n");
myprintf("world\n",12,'c',"Hong",stu1,282.71);
}
c语言中,printf自动确定可变参数
最新推荐文章于 2023-11-21 14:33:41 发布