首页 > 代码库 > TCL里提到的例程
TCL里提到的例程
1、printf / scanf
知识点:变长参数函数使用:
头文件#include<stdarg.h>
使用va_list ap; 来声明一个变长参数类型的变量ap,即argument pointer。
使用va_start(ap, fmt); fmt为最后一个有名参数(函数原型void print(char *fmt, ...)),ap将被设置为指向第一个无名参数的指针。
使用ival = va_arg(ap, int);来获得一个参数,类型由va_arg的第二个参数决定,并且ap指向下一个参数。
va_end(ap); 在函数返回前调用,完成相关清理工作。
#include<stdio.h>#include<stdarg.h>int main(){ print("%d %d",1,2); return 0;}void print(char *fmt, ...){ va_list ap; char *p, *sval; int ival; double dval; va_start(ap, fmt); for(p = fmt; *p; p++){ if(*p != ‘%‘){ putchar(*p); continue; } switch (*++p) { //略过% case ‘d‘: ival = va_arg(ap, int); printf("%d", ival); break; case ‘f‘: dval = va_arg(ap, double); printf("%f", dval); break; case ‘s‘: for(sval = va_arg(ap, char *); *sval; sval++) putchar(*sval); break; default: putchar(*p); break; } } va_end(ap);}
TCL里提到的例程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。